在C++中给定一个特定的STL集合,对于相同模板化的所有实例,是否end()
值是等价的?换句话说,以下代码是否适用于所有STL容器和情况(而不仅仅是std::map)?
std::map<Key, Value> foo(int seed);
std::map<Key, Value> instance1 = foo(1);
std::map<Key, Value> instance2 = foo(2);
std::map<Key, Value>::iterator itr = instance1.begin();
std::map<Key, Value>::iterator endItr = instance2.end(); // Comes from other collection!
for (; itr != endItr; ++itr) {
// Do something on each key value pair...
}
std::istream_iterator
)进行计数。即使在这些情况下,也没有直接保证。 - Jerry Coffinstd::map<K,V>::iterator
与std::map<K,V, custom_compare>::iterator
是相同的类型,但这并不意味着两个映射的结束迭代器具有相同的值。 - Dave S