c++ - STL 迭代器的语法是如何实现的?

标签 c++ stl iterator

我一直在利用业余时间编写一个库,以便让自己更熟悉 C++ 和奇异值分解。我一直在致力于编写一个 Iterator 类,并且我完全有能力编写该功能,并且我已经为我自己的当前 MatrixIterator 类编写了功能。我猜测它涉及命名空间,因为:

vector<int>::iterator

似乎是来自命名空间 vector 的迭代器,但命名空间是我不熟悉的另一个主题。

我主要是问实现一个迭代器需要什么,以便可以以与 STL 迭代器类似的方式引用它。我也知道我可以使用 boost.iterators 或类似的东西来为自己节省大量工作,但我更感兴趣的是学习此类内容的所有细节。

最佳答案

不,这与命名空间无关。它只是类中的 typedef:

template <typename T>
class container
{
public:
    typedef ... iterator;
};

一旦有了迭代器类,就需要实现几个运算符。对于前向迭代器,这将是:

operator*();
operator++();
operator==(const TYPE &other);

如果您想要一个可以完全参与 STL 其余部分的迭代器,您还需要做其他事情,例如为其指定一个类别。

关于c++ - STL 迭代器的语法是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2944862/

相关文章:

c++ - 为什么在转换/复制 vector 时进行这么多复制

c++ - 如何将std::pair对的迭代器传递给函数模板,并推导迭代器类型?

c++ - 没有匹配的调用函数

c++ - 我可以将字符串传递给 istream_iterator<int> 吗

c++ - 此代码在哪里取消引用无效的迭代器? (C++)

php - 陷入 php foreach 循环 - 需要再次使用相同的键运行循环

c++ - 在 C++ 中创建一个结构数组

c++ - move 构造函数的强制测试?

c++ - C中的原始#define理解

c++ - 位于字符串加密密码中的断点