WebCFace 2.9.0
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
num_vector.h
Go to the documentation of this file.
1#pragma once
2#include <memory>
3#include <vector>
4#ifdef WEBCFACE_MESON
5#include "webcface-config.h"
6#else
7#include "webcface/common/webcface-config.h"
8#endif
9
21 protected:
22 mutable std::shared_ptr<std::vector<double>> data_;
23 // data_がnullptrでない場合、first_の値がdata_[0]と同期している保証はない
24 double first_;
25
26 public:
27 NumVector(double v = 0);
28 NumVector(std::vector<double> vec);
29
34 operator const std::vector<double>&() const;
35
36 const double &operator[](std::size_t index) const { return at(index); }
37 const double &at(std::size_t index) const;
38
39 const double *data() const { return &at(0); }
40 const double *begin() const { return &at(0); }
41 const double *end() const { return begin() + size(); }
42 const double *cbegin() const { return &at(0); }
43 const double *cend() const { return begin() + size(); }
44
45 std::size_t size() const;
46
47 bool operator==(const NumVector &other) const;
48 bool operator!=(const NumVector &other) const { return !(*this == other); }
49};
50
57 public:
58 MutableNumVector(double v = 0) : NumVector(v){}
59 MutableNumVector(std::vector<double> vec): NumVector(std::move(vec)) {}
60
61 void assign(double v);
62 NumVector &operator=(double v) {
63 assign(v);
64 return *this;
65 }
66 void assign(std::vector<double> vec);
67
68 operator const std::vector<double>&() const = delete;
69
70 using NumVector::operator[];
71 double &operator[](std::size_t index) { return at(index); }
72 using NumVector::at;
73 double &at(std::size_t index);
74
75 using NumVector::data;
76 double *data() { return &at(0); }
77 using NumVector::begin;
78 double *begin() { return &at(0); }
79 using NumVector::end;
80 double *end() { return begin() + size(); }
81
82 void resize(std::size_t new_size);
83 void push_back(double v);
84};
85
shared_ptrで管理されているdoubleのvector
Definition num_vector.h:56
double & operator[](std::size_t index)
Definition num_vector.h:71
double * end()
Definition num_vector.h:80
double * begin()
Definition num_vector.h:78
double * data()
Definition num_vector.h:76
MutableNumVector(double v=0)
Definition num_vector.h:58
MutableNumVector(std::vector< double > vec)
Definition num_vector.h:59
NumVector & operator=(double v)
Definition num_vector.h:62
shared_ptrで管理されているdoubleのvector
Definition num_vector.h:20
const double * cend() const
Definition num_vector.h:43
const double * data() const
Definition num_vector.h:39
std::shared_ptr< std::vector< double > > data_
Definition num_vector.h:22
double first_
Definition num_vector.h:24
const double * begin() const
Definition num_vector.h:40
const double * end() const
Definition num_vector.h:41
const double & operator[](std::size_t index) const
Definition num_vector.h:36
bool operator!=(const NumVector &other) const
Definition num_vector.h:48
const double * cbegin() const
Definition num_vector.h:42
bool operator==(const T &other, const InputRef &ref)
Definition text.h:641
#define WEBCFACE_DLL
Definition webcface-config.h:69
#define WEBCFACE_NS_END
Definition webcface-config.h:118
#define WEBCFACE_NS_BEGIN
Definition webcface-config.h:117