实际上,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?
答案 0 :(得分:1)
向量不能重叠,因此一个非空容器的末尾不能轻易地成为另一个非空容器的末尾。可以想象,一个向量的末尾可以等于另一个向量的末尾。但我不认为你可以将迭代器与不同的容器进行比较,所以这并不重要。