c++ - 如何对包含 const 值的 vector 进行排序

标签 c++ sorting vector

我有一个像这样设置的 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;
}

不幸的是,由于 const 值,上面的排序将无法编译。有什么办法可以对这个 vector 进行排序吗?还是我一直在创建新 vector 并复制值?

最佳答案

在 C++03 中,std::vector 中的元素在 C++ 中必须是可复制赋值和可复制构造的。具有 const 成员的对不满足该要求,因此无效。编译器拒绝它是正确的。

在 C++11 中,std::vector 中的元素必须是可移动赋值和可移动构造的。具有 const 成员的对不能移动,因此会导致无效代码。

关于c++ - 如何对包含 const 值的 vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58082364/

相关文章:

C++ Xcode 9 - 无法从 Cimg 调用函数 display()

c++ - 序列化结构的 STL 映射

javascript - 如何根据另一个数组中的值并记住使用数组序列来特定对象中的键值

为最佳 "zigzag"配置文件选择一对向量的算法

c++ - 指针 vector ,其元素用新的 : what happens when assigning a new value? 初始化

c++ - qmake 不调用 uic

具有可变大小行的 C++ 二维数组

c# - csharp中矩形的emgucv角度检测

javascript - 使用 JavaScript 和/或 TinySort 按子元素的标准对父元素进行排序

c++ - 使用排序算法 C++