gpt4 book ai didi

C++:列表迭代器与 vector 迭代器

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

我认为迭代器对象的想法是您可以将它类似地应用于 C++ 容器类。但是,当我尝试遍历列表对象时,我尝试使用

for(list<int>::iterator it = obj.begin(); it < obj.end(); it++){
// some code
}

我得到了一个错误。为什么这不起作用?为什么它适用于 vector::iterator?仅仅是因为list的实现是双向链表吗?我认为迭代器对象抽象了在容器中移动的概念,从而允许它在操作上是相同的,无论是 vector 还是列表。

非常感谢您的澄清。

最佳答案

这不起作用,因为与 std::vector 不同迭代器,std::list迭代器不是随机访问的——它们是顺序的。您需要使用 !=在他们身上:

for(list<int>::iterator it = obj.begin(); it != obj.end(); it++)

一般来说,当您希望覆盖整个范围时,最好在所有迭代器上使用“不等于”,即使这些迭代器允许比较 <。和 > .还有一个论点支持使用 !=在你的常规 for循环,因为它给你最强的 postcondition .

关于C++:列表迭代器与 vector 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006403/

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