C++ I';我使用vector类创建自己的数组类。如何允许用户单独分配每个元素?
我有一个非常简单的数组类,基于vector类:C++ I';我使用vector类创建自己的数组类。如何允许用户单独分配每个元素?,c++,arrays,vector,C++,Arrays,Vector,我有一个非常简单的数组类,基于vector类: class myarray{ private: vector<double> data_; int size_; public: /// Constructor that allocates the memory myarray(const int& nx): size_(nx) { data_.resize(size_); } blah, blah, blah... 我希望用户能够执行以下操作: A(0
class myarray{
private:
vector<double> data_;
int size_;
public:
/// Constructor that allocates the memory
myarray(const int& nx): size_(nx) {
data_.resize(size_);
}
blah, blah, blah...
我希望用户能够执行以下操作:
A(0) = 1;
A(1) = 2;
等等。如何执行此操作?提供一个重载的
操作符()(int I)
函数
int operator()(int i ) { return data_[i]; }
不管这是不是正确的做法,都由你决定
如果您希望能够使用:
A(0) = 5;
更改函数以返回引用。事实上,也有一个重载的const
变量
int& operator()(int i ) { return data_[i]; }
int const& operator()(int i ) const { return data_[i]; }
为
操作符()(size\u t)
提供两个重载:
第一个版本允许您读取和写入myarray
的可变实例的元素。第二个选项允许您读取myarray
的const
实例的元素(或通过const
引用或指向const的指针进行访问)
注意:严格来说,正确的索引类型应该是
std::vector::size\u type
。这通常与std::size\t
相同,但如果使用自定义分配器,则可能会有所不同。我建议a[0]
等。但是,您的“阵列”将提供哪些附加功能?为什么它比直接使用std::vector
更好?如果新的myarray
具有与std::vector
和/或std::array
相同的功能,那么这必须是一个家庭作业练习。是否正确?否。我正在向同事正在使用的现有数组类添加功能。最后,我想将其与python接口。此外,我必须使用这个类,因为这个类正被其他类使用。所以不幸的是,现在使用标准向量类已经太晚了。这似乎不允许我分配元素,比如A(3)=5.0;
int& operator()(int i ) { return data_[i]; }
int const& operator()(int i ) const { return data_[i]; }
int& operator()(std::size_t i) { return data_[i]; }
const int& operator()(std::size_t i) const { return data_[i]; }