我是一位经验丰富的程序员,回到某个类的C ++评论中。我们有一个编写一些相对简单的c ++程序的任务。得到一个我不习惯的奇怪错误,但我确定这是这个社区的孩子的游戏。
int pull_next_element (int r, std::vector<int>& sequence) {
int x = sequence[0];
sequence.erase(sequence.begin()); //orig: sequence.erase(0);
return x;
}
我得到的错误:
Error C2664: 'std::_Vector_iterator<_Myvec> std::vector<_Ty>::erase(std::_Vector_const_iterator<_Myvec>)' : cannot convert parameter 1 from 'int' to 'std::_Vector_const_iterator<_Myvec>'
编辑:替换为迭代器而不是数字索引,否则在整个代码中修复此问题。谢谢大家。
答案 0 :(得分:3)
http://www.cplusplus.com/reference/stl/vector/erase/
// erasing from vector
#include <iostream>
#include <vector>
using namespace std;
int main ()
{
unsigned int i;
vector<unsigned int> myvector;
// set some values (from 1 to 10)
for (i=1; i<=10; i++) myvector.push_back(i);
// erase the 6th element
myvector.erase (myvector.begin()+5); // <====================================================
// erase the first 3 elements:
myvector.erase (myvector.begin(),myvector.begin()+3);// <====================================
cout << "myvector contains:";
for (i=0; i<myvector.size(); i++)
cout << " " << myvector[i];
cout << endl;
return 0;
}
答案 1 :(得分:1)
你应该使用引用参数而不是'sequence'的value参数,否则你的擦除将毫无用处。
int pull_next_element (int r, std::vector<int>& sequence)