gpt4 book ai didi

c++ - std::sort 如何处理对列表?

转载 作者:可可西里 更新时间:2023-11-01 17:38:05 25 4
gpt4 key购买 nike

为什么 this :

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

using namespace std;

vector<pair<int, string>> list;

int main() {
int one = 1, two = 2, three =3, five =5, six = 6;
string bla = "bla";

list.push_back( pair<int, string>(two, bla));
list.push_back( pair<int, string>(one, bla));
list.push_back( pair<int, string>(two, bla));
list.push_back( pair<int, string>(six, bla));
list.push_back( pair<int, string>(five, bla));

sort(list.begin(), list.end());

for(auto item : list) {
cout << item.first << endl;
}
}

按预期工作?输出是:

1
2
2
5
6

std::sort 如何获取如何对我的 int-string 对进行排序?如何让它对我的某些类作为对 first 这样做?有没有办法使用 std::sortsecond 排序?

最佳答案

operator< std::pair 定义它基于 std::pair::first然后 std::pair::second (字典顺序),所以你的代码作为标准工作。根据 std::pair 的第二部分对其进行排序你可以试试这个:

std::sort(list.begin(), list.end(), [](const std::pair<int, string> &x,
const std::pair<int, string> &y)
{
return x.second < y.second;
});

关于c++ - std::sort 如何处理对列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23816797/

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