【发布时间】:2015-05-21 11:18:24
【问题描述】:
为了说明,假设我有一个自定义容器,而不是在内部使用 STL std::vector。如果我 typedef std::vector<char*>::iterator 到 my_container::iterator,那么取消引用迭代器将返回一个 char*。但是,我的自定义容器应该隐藏其内部,这意味着我希望取消引用返回 char。
如何做到这一点?
class my_container {
public:
typedef std::vector<char*> vector;
private:
vector vec_;
};
更新:char* 就是一个例子。这并不意味着 C 字符串;使用int 会更清楚示例。
另外,我想使用 std::forward_iterator_tag 和 std::iterator,因为这似乎是一种更标准/当前的方法。
【问题讨论】:
-
您可能需要实现自己的迭代器,一个在两个级别上进行迭代的迭代器(实际迭代器的
char*和解引用运算符的char)。 -
char是从哪里来的,你的意思是要遍历向量中的每个子字符串还是仅仅解引用两次?
标签: c++ iterator containers template-meta-programming