在比较C ++中<
的随机访问迭代器时,>
或std::vector
的比较内容是什么?
它是否比较指针地址或指向的内容?
为什么其他迭代器类型不支持<
和>
但是!=
?
答案 0 :(得分:2)
通常,所有随机访问迭代器都支持关系比较,因为对于它们,可以轻松,立即和有效地评估这种比较。
随机访问迭代器的关系比较不会比较“指针地址或指向内容”。 (你在谈论什么指针,BTW?)当你将随机访问迭代器与<
或>
进行比较时,它只是告诉你,巫师迭代器引用了容器的早期元素。容器元素越接近容器的开头,相应的迭代器“越小”将出现在关系比较运算符中。将它想象为比较迭代器引用的容器元素的 indices 。如何在内部实现这种比较是一个实现细节。在std::vector
的情况下,它通常会归结为指针比较。如果og std::deque
它会更复杂,但仍然非常有效。
相同的逻辑可以应用于非随机访问迭代器,这意味着非随机访问迭代器也可以按照相同的原则被视为有序。但是对于非随机访问迭代器,通常没有有效的直接方式来说,哪一个是“更大”哪个是“更小”。不可能立即说出哪个迭代器指向非随机可访问容器中的早期元素。这就是这些迭代器不支持关系比较运算符的原因。