在课堂上访问矢量

时间:2011-06-02 03:50:19

标签: c++ class vector

如果我的班级中有一个向量作为私人成员,访问它的最佳方法是什么?例如,采用以下简单类

class MCL{
    private:
    std::vector my_vec;

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

访问my_vec的最佳方法是什么?具体来说,我想使用getter函数来访问它。

3 个答案:

答案 0 :(得分:2)

通过const引用返回它,或者只是通过引用返回它,如果你想允许更改。

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

用法:

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

答案 1 :(得分:0)

创建一个名为

的公共函数

std:vector getMyVec(){return my_vec;}

答案 2 :(得分:0)

根据类的语义,您可能希望实现operator []:

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

通过这种方式,您可以使用[]访问向量的内容:

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

请注意,这可能被视为滥用operator []或不良做法,但开发人员需要判断此构造是否适合类,具体取决于其语义。

另请注意,此解决方案不提供从向量中插入或删除元素的方法,只是访问已存在的元素。您可能希望添加其他方法来执行这些操作或实现类似:

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

同样,它取决于您的类的语义和它的使用模式。这可能是也可能不是一个好主意。