矢量结束迭代器

时间:2011-02-26 19:09:07

标签: c++ stl vector iterator

  

可能重复:
  comparing iterators from different containers

实际上,std::vector<T>::iterator可能在大多数STL实现中实现为包裹T*,因此每个迭代器都与唯一的内存地址相关联(假设迭代器来自非空向量)。

但是,这是一个实现细节。 C ++标准是否有任何实际的保证,每个向量迭代器都是独一无二的?具体来说,一个非空向量的end()迭代器是否可以等于另一个非空向量的end()迭代器?

例如:

std::vector<int> v1;
std::vector<int> v2;
/* Fill both vectors with values... */

assert(v1.end() != v2.end()); // Does C++ guarantee this assertion will succeed?

1 个答案:

答案 0 :(得分:1)

向量不能重叠,因此一个非空容器的末尾不能轻易地成为另一个非空容器的末尾。可以想象,一个向量的末尾可以等于另一个向量的末尾。但我不认为你可以将迭代器与不同的容器进行比较,所以这并不重要。