gpt4 book ai didi

c++ - 作为返回值的 STL 迭代器

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:48 26 4
gpt4 key购买 nike

我有 A 类,其中包含 std::vector,我想从 A 类外部访问 vector 。

我首先想到的是创建一个将迭代器返回给 vector 的 get 函数,但是遍历 vector 我将需要两个迭代器(开始和结束)。

我想知道有什么方法(技术或模式)可以只用一个迭代器迭代整个 vector 吗?或者也许是其他一些访问 vector 的方法,当然不使用 vector 作为返回值:)

最佳答案

为什么不在您的类中同时添加一个 begin() 和 end() 函数,只需 return v.begin();return v.end(); ? (假设 v 是您的 vector 。)

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;
}

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

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

关于c++ - 作为返回值的 STL 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1786201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com