生锈/初学者C++编译错误 我是一个经验丰富的程序员,回到一个类的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; }

生锈/初学者C++编译错误 我是一个经验丰富的程序员,回到一个类的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; },c++,C++,我得到的错误是: 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>' 编辑:替换为迭代器而不是数字索引,并在整个代码中修复了此问

我得到的错误是:

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>'
编辑:替换为迭代器而不是数字索引,并在整个代码中修复了此问题。谢谢大家


您应该使用引用参数而不是“sequence”的值参数,否则您的擦除将无效

int pull_next_element (int r, std::vector<int>& sequence) 

现在还不完全清楚您的问题是什么……请在您发布的源代码中指出哪一行是第58行。仅供参考,基本问题解决过程:阅读编译器错误。似乎您需要传递一个迭代器来擦除,而不是一个值。阅读文档以确认,是的。。。你先尝试过这个吗?啊,是的,现在我明白了传递迭代器的重要性,对此表示歉意。我将其更改为迭代器,并更新了线程。虽然答案在此链接中可用,但不鼓励仅作为链接的答案,因为链接可能无法访问。最好解释一下相关章节。啊,是的,我忽略了这一点,谢谢!!
int pull_next_element (int r, std::vector<int>& sequence)