比较随机访问迭代器(如 C++ 中的 Vector)时,< >的比较内容是什么?

what's the compare content for < > when compare random access iterator such as vector in c++?

本文关键字:比较 lt gt 是什么 迭代器 访问 随机 Vector 中的 C++      更新时间:2023-10-16

比较c++中std::vector等随机访问迭代器时,<>的比较内容是什么?

比较指针地址还是指向内容?

为什么其他迭代器类型不支持<>,而支持!= ?

一般来说,所有随机访问迭代器都支持关系比较,因为对它们来说,这种比较可以很容易、立即和有效地求值。

随机访问迭代器的关系比较不比较"指针地址或指向内容"。(顺便问一下,你说的是什么指标?)当将随机访问迭代器与<>进行比较时,它只是告诉您哪个迭代器指向容器的较早的元素。容器元素越靠近容器的开头,对应的迭代器在关系比较操作符看来就越"小"。可以把它看作是比较迭代器所引用的容器元素的索引。如何在内部实现这种比较是一个实现细节。在std::vector的情况下,它通常归结为指针比较。在std::deque的情况下,它将更复杂,但仍然相当有效。

同样的逻辑可以应用于非随机访问迭代器,这意味着非随机访问迭代器也可以按照相同的原则被视为有序的。但对于非随机访问迭代器,通常没有有效的直接方法来判断哪个"大",哪个"小"。不可能立即说出哪个迭代器指向非随机访问容器中的先前元素。这就是此类迭代器不支持关系比较操作符的原因。