gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:25:31 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com