如何对包含const值的向量进行排序

GBl*_*ney 3 c++ sorting vector

我有一个这样的矢量设置,我想对它进行排序:

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

using namespace std;

int main()
{
    const int a =10;
    int b = 20;
    pair<const int, int> constPair1(a,b);
    b=30;
    pair<const int, int> constPair2(a,b);
    vector<pair<const int, int>> vec{constPair1,constPair2};
    sort(vec.begin(),vec.end());

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于const值的原因,上面的排序不会编译.有什么方法可以对这个载体进行排序吗?或者我是不是创建了一个新的向量并复制了值?

Jen*_*ens 6

在C++ 03中,std :: vector中的元素必须是可复制赋值的,并且可以在c ++中进行复制构造.具有const成员的对不符合该要求,因此无效.编译器是正确的.

在C++ 11中,std :: vector中的元素必须是可移动赋值和可移动构造的.无法移动具有const成员的对,从而导致代码无效.