STL迭代器作为返回值

use*_*986 4 c++ iterator stl

我有A类,它包含std :: vector,我想从A类外部访问该向量.

我想到的第一件事就是创建一个将迭代器返回给向量的get函数,但是遍历向量我将需要两个迭代器(开始和结束).

我想知道是否有任何方法(技术或模式)只用一个迭代器迭代整个向量?或者可能有其他方式来访问vector,当然不使用vector作为返回值:)

Bil*_*ill 8

为什么不同时添加begin()和end()函数到类,简单地return v.begin();return v.end();?(假设v是你的向量.)

class MyVectorWrapper
{
public:
  // Give yourself the freedom to change underlying types later on:
  typedef vector<int>::const_iterator const_iterator;

  // Since you only want to read, only provide the const versions of begin/end:
  const_iterator begin() const { return v.begin(); }
  const_iterator end() const { return v.end(); }

private:
  // the underlying vector:
  vector<int> v;
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像其他任何一样遍历你的类:

MyVectorWrapper myV;
for (MyVectorWrapper::const_iterator iter = myV.begin(); iter != myV.end(); ++i)
{
  // do something with iter:
}
Run Code Online (Sandbox Code Playgroud)