簡體   English   中英

訪問 class 中的向量

[英]Accessing vector in class

如果我在 class 中有一個向量作為私有成員,那么訪問它的最佳方式是什么? 比如下面這個簡單的class

class MCL{
    private:
    std::vector my_vec;

    public:
    // Include constructor here and other member functions
}

訪問 my_vec 的最佳方式是什么? 具體來說,我想使用吸氣劑 function 來訪問它。

通過 const 引用返回它,或者如果您想允許更改,則僅通過引用返回。

const std::vector<T> & getVector() const
{
    return vector;
}

用法:

const std::vector<T> &v = myClass.getVector();

創建一個名為的公共 function

std:vector getMyVec() {return my_vec;}

根據 class 的語義,您可能需要實現 operator[]:

T& operator[](int i) {
  return my_vec[i];
}

這樣您就可以使用 [] 訪問向量的內容:

MCL a;
a[0] = 3;
std::cout << a[0] << std::endl;

請注意,這可能被認為是濫用 operator[] 或不良做法,但由開發人員根據其語義判斷此構造是否適合 class。

另請注意,此解決方案不提供從向量中插入或刪除元素的方法,只是訪問已經存在的元素。 您可能想要添加其他方法來執行這些操作或實現類似:

T& operator[](int i) {
  if(my_vec.size() < i)
    my_vec.resize(i+1);
  return my_vec[i];
}

同樣,這取決於您的 class 的語義及其使用模式。 這可能是也可能不是一個好主意。

暫無
暫無

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

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