我在一个容器中有两个迭代器,一个是常量,一个是非常量。比较它们以查看它们是否都引用容器中的同一个对象是否存在问题?这是一个通用的 C++11 迭代器问题:
是否可以合法地比较 const 和非 const 迭代器以查看它们是否都引用同一个对象,而与容器的类型无关(即,它们都是保证引用同一容器或该容器末端的对象的迭代器(),但一个是 const,另一个不是)?
例如,考虑以下代码:
some_c++11_container container;
// Populate container
...
some_c++11_container::iterator iObject1=container.begin();
some_c++11_container::const_iterator ciObject2=container.cbegin();
// Some operations that move iObject1 and ciObject2 around the container
...
if (ciObject2==iObject1) // Is this comparison allowed by the C++11 standard?
...; //Perform some action contingent on the equality of the two iterators