为什么C ++ STL有五种不同的迭代器?

时间:2014-01-04 14:36:37

标签: c++ stl

为什么C ++ STL有五个迭代器?只有随机迭代器才足以对所有容器进行操作。有什么特别的原因吗?

抱歉..这是我的错误..我不是指随机迭代器...我应该问一下双向迭代器...所以你不认为只有双向迭代器可以覆盖输入的功能,输出,转发迭代器?那么有没有具体的理由来介绍(输入,输出,转发)迭代器的概念?谢谢。 -

2 个答案:

答案 0 :(得分:6)

容器不是唯一有趣的序列。此外,std::list<...>和关联容器没有有效的随机访问方法,尽管它们是容器。 std::forward_list<...>可以向一个方向行走。当序列是源或排水时,它们通常只能遍历一次。哦,看!我实际上给出了所有五个类别的理由!

请注意,“STL迭代器”不是类,而是 concepts ,即满足相应迭代器概念所需的操作和相关类型的要求。基本思想是算法接口是根据最弱的概念指定的,从而产生有效的实现。当为算法提供更强的概念时,它们可能能够应用一些优化。这种方法可以生成灵活有效的算法,可以在各种不同的序列上运行。

答案 1 :(得分:1)

了解check this page

的原因

随机访问迭代器无法始终工作。一个简单的例子:如果您通过网络传输数据,则无法从头开始。原因有很多,但只需阅读页面即可。