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