0

比较随机访问迭代器(例如C++中的 a )的比较内容是什么<>std::vector

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

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

4

1 回答 1

2

通常,所有随机访问迭代器都支持关系比较,因为对它们而言,可以轻松、立即且有效地评估此类比较。

随机访问迭代器的关系比较不比较“指针地址或指向的内容”。(顺便说一句,您在说什么指针?)当您将随机访问迭代器与<or进行比较时>,它只是告诉您 witch iterator 指的是容器的较早元素。容器元素越靠近容器的开头,对应的迭代器在关系比较运算符看来就越“小”。将其视为比较迭代器所指的容器元素的索引。如何在内部实现这种比较是一个实现细节。如果发生这种情况,std::vector通常会归结为指针比较。如果 ogstd::deque它会更复杂,但仍然非常有效。

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

于 2013-06-19T05:19:22.783 回答