gpt4 book ai didi

c++ - 如何按键对 std::list 进行排序?

转载 作者:行者123 更新时间:2023-12-01 14:35:51 26 4
gpt4 key购买 nike

我想对 std::list<std::pair<string, int>> 进行排序通过 key 以及 value 在两个单独的函数中。

我收到一条错误消息:

error: reference to non-static member function must be called
sort(test.begin(), test.end(), sortByVal);

代码

class Test 
{
std::list<pair<std::string, int>> test;

public:
void sortbykey()
{
sort(test.begin(), test.end(), sortByVal);
}

bool sortByVal(const std::pair<std::string, int>& a, const std::pair<std::string, int>& b)
{
return (a.first < b.first);
}
};

最佳答案

std::sort 需要将迭代器传递给 Legacy Random AccessIterator 。但是 std::list Legacy Bidirectional Iterator ,这就是错误的原因。


另一方面,std::list有一个成员函数 std::list<T>::sort ,如果您坚持容器必须是 std::list,那将是首选方式。 .

因为您需要按 first 排序在对中,您需要将自定义比较器(或 lambda)传递给它。

意味着你需要

void sortbykey()
{
test.sort([](const auto& lhs, const auto& rhs) { return lhs.first < rhs.first; });
}

关于c++ - 如何按键对 std::list 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62353058/

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