gpt4 book ai didi

c++ - 在自定义迭代器中包装 STL 容器的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:35 33 4
gpt4 key购买 nike

为了说明,假设我有一个自定义容器而不是使用 STL std::vector在内部。如果我输入 def std::vector<char*>::iteratormy_container::iterator ,然后取消引用迭代器将返回 char* .但是,我的自定义容器应该隐藏其内部结构,这意味着我想要取消引用以返回 char .

如何实现?

class my_container {
public:

typedef std::vector<char*> vector;

private:

vector vec_;

};

更新: char*是一个例子。它并不意味着 C 字符串;这个例子用 int 会更清楚.

此外,我想使用 std::forward_iterator_tagstd::iterator因为这似乎是一种更标准/当前的方法。

最佳答案

如果您想要自己的迭代器,只需开始将其编写为嵌套类即可。它需要包装一个 std::vector<char*>::iterator ,拦截通常的操作(例如 ++*-- ),比如:

class iterator
{
public:
iterator& operator++() { ++i_; return *this; }
char& operator*() { return **i_; }
...etc...

private:
std::vector<char*>::iterator i_;
};

如果您尝试并遇到困难,请发布您的尝试,我们会进一步帮助您。

关于c++ - 在自定义迭代器中包装 STL 容器的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30372198/

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