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

时间:2013-06-19 05:15:51

标签: c++ iterator

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

它是否比较指针地址或指向的内容?

为什么其他迭代器类型不支持<>但是!=

1 个答案:

答案 0 :(得分:2)

通常,所有随机访问迭代器都支持关系比较,因为对于它们,可以轻松,立即和有效地评估这种比较。

随机访问迭代器的关系比较不会比较“指针地址或指向内容”。 (你在谈论什么指针,BTW?)当你将随机访问迭代器与<>进行比较时,它只是告诉你,巫师迭代器引用了容器的早期元素。容器元素越接近容器的开头,相应的迭代器“越小”将出现在关系比较运算符中。将它想象为比较迭代器引用的容器元素的 indices 。如何在内部实现这种比较是一个实现细节。在std::vector的情况下,它通常会归结为指针比较。如果og std::deque它会更复杂,但仍然非常有效。

相同的逻辑可以应用于非随机访问迭代器,这意味着非随机访问迭代器也可以按照相同的原则被视为有序。但是对于非随机访问迭代器,通常没有有效的直接方式来说,哪一个是“更大”哪个是“更小”。不可能立即说出哪个迭代器指向非随机可访问容器中的早期元素。这就是这些迭代器不支持关系比较运算符的原因。