如何使用sort对类中的向量进行排序

cod*_*ody 0 c++ sorting vector

我想知道如何使用sort函数对类中私有的向量进行排序:

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


using namespace std;

class A{
private:
    const vector<int> myvec;
    A(vector<int>& vec) : myvec(vec) { }

public:
    const vector<int>& getvec() { return myvec; }

    int get_sec_element(){
        int sec_ele = 0;

        sort(myvec.begin(), myvec.end());

        sec_ele = myvec[2];
        return sec_ele;
    }
};
Run Code Online (Sandbox Code Playgroud)

因此,如果我创建A myvec_object并使用已包含值的向量填充它,则调用myvec_o​​bject.get_sec_ele()将返回向量中的第2个元素.但是,编译器给出了一个巨大的错误消息:"从此处实例化".可能是什么问题呢?

ild*_*arn 7

你声明myvecconst-你将如何指望修改?

声明myvec为:

vector<int> myvec;
Run Code Online (Sandbox Code Playgroud)


bdo*_*lan 5

您已将矢量定义为const; 这使它在初始化后不可变.如果你打算对矢量进行排序,你需要取消它的构造,或者制作一个副本来进行排序(当然,如果你打算不止一次这样做,这将很慢).