请教大虾们一个vector的问题!!!!
为什么在泛型算法中使用vector的递增或递减iterator会出错?比如:
std::vector<int> vec;
for (int i = 0; i < 9; ++i)
{
vec.push_back(i);
}
std::vector<int>::iterator pos;
pos = find(++vec.begin(), vec.end(), 5); //出错
但是编译出错,错在++vec.begin(),《C++标准程序库》一书中说是因为C++不允许修改任何基本型别(包括指针)的暂时值,但是vector的iterator通常会实作为一般指针。如果换成list等容器就不会出错。可是我还是不理解什么叫“C++不允许修改任何基本型别的(包括指针)暂时值”?为什么会这样?哪位大虾能解释一下?万分感谢!!!