擦除函数调用错误

Erase function wrong call

本文关键字:错误 函数调用 擦除      更新时间:2023-10-16

我正在写这段代码

string largestNumber(const vector<int> &A) {
        {
        //Doing something
        }
        result.append(to_string(A[maxindex]));
        A.erase(A.begin()+maxindex);
    }
    cout << result;
}

现在在这个我正确地使用擦除功能。从一开始传递迭代器并向其添加索引值。我哪里做错了?

出现错误

no matching member function for call to 'erase'

我已经包含了向量头文件

#include <vector>
#include <iostream>
#include <algorithm>
#include <string>

"现在我正确地使用了擦除功能。"

不,你没有。

根据这里描述的声明

类型需求

-T必须满足MoveAssignable的要求。

你不能修改const引用的std::vector, erase()需要一个非const引用,所以编译器错误信息实际上是不清楚的?

你必须声明你的函数接收一个非const引用形参:

 string largestNumber( /* const */ vector<int> &A) {
                       // ^^^^^ omit this

或使其符合移动

的条件
 string largestNumber( vector<int> &&A) {