C++ I';我使用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

我有一个非常简单的数组类,基于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) = 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]; }