gpt4 book ai didi

c++ - 为什么我不能使用列表迭代器逻辑比较运算符?

转载 作者:行者123 更新时间:2023-11-30 01:59:46 25 4
gpt4 key购买 nike

这是非常基础的,但我在这里找不到类似的问题。我正在尝试使用列表从不同方向迭代相同的排序 STL 列表。我知道我可以将迭代器与 list.begin()list.end() 进行比较,但为什么这不起作用?

list<family>::iterator itLargeFamily = 
families.begin(); //starts from the biggest families
list<family>::iterator itSmallFamily =
families.end(); //starts from the smallest families

for (; itSmallFamily > itLargeFamily; --itSmallFamily, ++itLargeFamily) {
// stuff...
}

当然是错误

no operator > matches these operands

100% 的可能性我遗漏了一些基本的东西。

最佳答案

只有随机访问迭代器是有序的。 std::list迭代器只是双向迭代器,所以不支持operator<operator> .

相反,您可以与 != 进行比较.

while (itSmallFamily != itLargeFamily)

不过,您必须确保迭代器不会相互跳过才能使其正常工作。也就是说,如果 itSmallFamily距离itLargeFamily只有一个增量,您只需将它们交换过来,它们将永远不会彼此相等。

您可以改为使用 std::vector ,其迭代器是随机访问迭代器。此外,std::arraystd::deque也支持随机访问。

关于c++ - 为什么我不能使用列表迭代器逻辑比较运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15876191/

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