gpt4 book ai didi

c++ - 自定义迭代器

转载 作者:行者123 更新时间:2023-11-30 02:56:41 25 4
gpt4 key购买 nike

我正在使用数据结构创建一个库:std::vector<std::string> .我必须满足 API,它表示为了遍历我的数据结构,用户必须执行以下操作:

for (lib::result::const_iterator it = data.begin(); it != data.end(); it++)

我有两种方法可以做到这一点,实现 lib::result::const_iterator自己或继承自std::vector<std::string>::iterator ,他们都应该工作。我读到过从 vector 迭代器继承是个坏主意。

我决定使用 Boost 迭代器外观,这是个好主意吗?另外,我在执行 increment() 时遇到问题.如果我有一个指向 std::vector 中的字符串的指针,我该如何指向下一个字符串?

最后,我的实现可以从 std::vector<std::string> 改变, 至 std::vector<MyDatatype> ,所以我想使用 boost facade,所以如果我决定更改我的数据结构,事情会更容易。谢谢。

最佳答案

您可以只使用 vector 迭代器:

class MyClass
{
typedef std::vector<std::string> MyData;

MyData data;

public:
typedef MyData::iterator iterator;
typedef MyData::const_iterator const_iterator;

iterator begin() {return data.begin();}
const_iterator begin() const {return data.begin();}

.... etc

关于c++ - 自定义迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15274190/

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