我一直在利用业余时间编写一个库,以便让自己更熟悉 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/