【发布时间】:2020-01-24 16:47:44
【问题描述】:
我有一个这样设置的向量,我想对其进行排序:
#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 值,上述排序将无法编译。有什么办法可以对这个向量进行排序吗?还是我被困在创建新向量并复制值?
【问题讨论】:
-
为什么会有
const变量的向量? vector 本质上是一个动态容器,不是吗? -
这将是一个必须接受
const值的容器的底层实现。 -
你可以使用std::map吗? value_type 是 std::pair
并且默认排序。拥有 std::map 将是微不足道的. -
@DanShield 我认为地图行不通。 23.2.4.7 说容器的类型要求适用于映射的键和值类型,并且 const 值不可分配或移动。
-
@DanShield 这实际上被用作地图专业化的底层实现,因此使用 std::map 没有意义。