以下行会产生一个编译器错误:
std::vector<int>::iterator blah = std::advance(instructions.begin(), x );
我声明的地方:
std::vector<int> instructions;
int x;
我得到的错误是:
error C2440: 'initializing' : cannot convert from 'void' to 'std::_Vector_iterator<_Ty,_Alloc>'.
该语句的哪个元素属于 void
类型?
最佳答案
advance 不返回高级迭代器,它移 Action 为参数传递的迭代器。所以你的代码应该是:
std::vector<int>::iterator blah = instructions.begin();
advance(blah, x);
关于c++ - 什么可能会在此语句中生成编译器错误以推进迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2067833/