例如,这个表达式在语义上是否有效?
container.begin() == container.begin();
答案 0 :(得分:11)
是的,只要迭代器都没有失效。
例如,以下内容无效:
std::deque<int> d;
std::deque<int> begin1 = d.begin();
d.push_front(42); // invalidates begin1!
std::deque<int> begin2 = d.begin();
assert(begin1 == begin2); // wrong; you can't use begin1 anymore.
答案 1 :(得分:4)
是的,begin()
将返回给定容器实例的相同迭代器,除非您以某种方式更改容器(end()
也具有此属性)。例如,std::vector::push_back()
可能导致重新分配数组以容纳新元素。