使用迭代器与索引访问向量元素有什么好处?
答案 0 :(得分:8)
为什么迭代器比索引更好?
但是,如果忽略不支持随机访问的容器类型(列表,设置等),迭代器仍会提供
答案 1 :(得分:4)
模块化就是答案。假设你将逻辑包装在一个函数调用中(一个好的做法)。在这种情况下,使它接收迭代器将使它成为通用的,这样它就可以在C样式数组(指针),C ++ stl向量或任何真正表现得像迭代器容器的东西上运行,例如链接列表。
答案 2 :(得分:3)
我说它跨容器的可移植性。
如果使用向量编写代码并使用索引进行迭代,则以后不能轻易地将代码更改为其他容器。
typedef std::vector<int> myContainer; //only change here for std::list
for ( myContainer::iterator iter = actualContainer.begin();
iter != actualContainer.end();
++iter)
{}
在上面的代码中,如果要从向量更改为列表,则很容易实现。如果您使用过该索引,那么就无法实现。
否则,因为向量使用随机访问迭代器,所以它应该是相同的。 (索引或迭代器一切正常)
答案 3 :(得分:1)