考虑以下代码:
#include <vector>
#include <iostream>
int main()
{
std::vector<int> vec{1,2,3,5};
for(auto it=vec.cbegin();it!=vec.cend();++it)
{
std::cout << *it;
// A typo: end instead of cend
if(next(it)!=vec.end()) std::cout << ",";
}
std::cout << "\n";
}
在比较中,我使用了错误的函数名vec.end()
而不是vec.cend()
。在gcc 5.2上似乎达到了预期的效果。但是根据标准,这是否被定义良好呢?iterator
和const_iterator
可以安全地进行比较吗?