c++ - 什么可能会在此语句中生成编译器错误以推进迭代器?

标签 c++ compiler-errors

以下行会产生一个编译器错误:

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/

相关文章:

C++/SIFT/SQL - 如果有一种方法可以有效地比较图像的 SIFT 描述符和 SQL 数据库中的 SIFT 描述符?

c++ - 功能模板的部分属性在 GCC 中被静默忽略

java - OOP:哪个类应该拥有一个方法?

swift - 线程1 : EXC_BAD_ACCESS (code=1, address = 0x38)

c++ - 为 x64 平台编译时出现 c2593 错误(运算符标识符不明确)

java - 这里不允许使用“void”类型 - 有解决方法吗?

c# - 通过 DllImport 在 C# 中调用 C 方法 - 尝试读取或写入 protected 内存

c++ - 将物体固定到相机上的问题

go - 为什么不 foo := foo() result in an error?

python tkinter在函数之间传递变量