4
在實踐中,std::vector<T>::iterator
可能是實現爲大多數STL實現一個包裹T*
,所以每一個迭代器與唯一的存儲器地址相關聯(假設迭代器來自非空向量)。
但是,這是一個實現細節。 C++標準中是否有任何實際保證,每個向量迭代器在某種程度上都是唯一的?具體來說,一個非空向量的迭代器是否可以等於另一個非空向量的迭代器?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?
對於每個vector都有一個特殊的'end()'值(但不太可能,因爲迭代器不可能是一個原始指針),但是就像你說的那樣,這是不確定的行爲。 – 2011-02-26 19:30:55