【发布时间】:2021-07-14 13:49:36
【问题描述】:
我有一个清单:
std::list<std::string> list = {data2, data2, data2, data3, data3, data1, data1};
我有一个排序规则:
std::list<std::string> sortRule = {data1, data2, data3};
我需要根据sortRule对list进行排序,即:
list = {data1, data1, data2, data2, data2, data3, data3};
据我了解,我需要使用std::list::sort 和 lambda 函数..
【问题讨论】:
-
你尝试了吗?它只是根据
sortRule中的索引使用自定义谓词进行排序 -
坏消息:你不能使用
std::sort和std::list,不管你怎么做。std::sort不适用于std::list。您需要从头开始重新考虑整个方法。 -
std::list::sort采用自定义比较器。我看不出这与使用std::sort有何根本不同。在实现方面它是不同的,它有不同的复杂性保证,但用法或多或少是相同的 -
@jabaa 或致电
std::list::sort -
@jabaa 首先使用
std::vector会是更好的选择;)。我不知道std::list比std::vector做得更好,尤其是在元素数量相当少的情况下