簡體   English   中英

我正在使用vector類創建自己的數組類。 如何允許用戶單獨分配每個元素?

[英]I'm creating my own array class, using the vector class. How do I allow a user to assign each element individually?

我有一個非常簡單的數組類,基於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...

我希望用戶能夠單獨分配myarray的每個元素。 例如,在聲明對象之后

myarray A(10);

我希望用戶能夠執行以下操作:

A(0) = 1; 
A(1) = 2; 

等等。我該怎么辦?

operator()(size_t)提供幾個重載:

int& operator()(std::size_t i) { return data_[i]; }

const int& operator()(std::size_t i) const { return data_[i]; }

第一個版本允許您讀取和寫入myarray的可變實例的元素。 第二個允許你讀取myarrayconst實例的元素(或通過const引用或指向const訪問)。

注意:嚴格來說,索引的正確類型是std::vector<double>::size_type 這通常與std::size_t相同,但如果使用自定義分配器,則可能不同。

提供重載的operator()(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]; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM