gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 00:22:48 25 4
gpt4 key购买 nike

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

vector<int>::iterator

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

主要是我想问的是,实现一个迭代器会涉及到什么,这样它就可以以类似于 STL 迭代器的方式被引用。我也知道我可以使用 boost.iterators 或类似的东西来为自己省去很多工作,但我更感兴趣的是了解涉及此类内容的所有细节。

最佳答案

不,这与 namespace 无关。它只是类中的一个 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/

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