【问题标题】:How can I sort a second STL list by the order of first STL list如何按第一个 STL 列表的顺序对第二个 STL 列表进行排序
【发布时间】:2016-02-25 21:49:52
【问题描述】:

如果我将几个水果名称推回第一个 STL 列表,同时我将每个水果的数量推回第二个 STL 列表; 如果我想按字母顺序对第一个 STL 列表进行排序,如何按水果 STL 列表的顺序对第二个 STL 列表进行排序?

【问题讨论】:

  • 您可以为所有排序函数提供自定义函数。此外,您可以提供一个行为类似于函数的对象,您可以在其中引入相应的顺序。
  • 如果需要将属性连接在一起,如本例中的水果名称和编号,将它们存储在单独的列表中是没有意义的。将它们都放入一个对象并将对象存储在一个列表中。否则这将成为一个难题。

标签: c++ stl


【解决方案1】:

你可以使用std::map

使用比较函数比较对键进行排序。

或者你 sort 之后有一个名称+金额列表 pairs 具有自定义比较功能(std::string 支持 std::lexicographical_compare)。

【讨论】:

  • 我知道如何使用 map 来做到这一点,我只是想知道如何使用 stl list。
  • @HaotianSong 所以我想你必须实现自己的排序函数,将包含水果的列表中的每个操作应用到第二个。但我同意 Youka 和 MarkRansom 的观点:std::list 不是你想做的。如果你真的需要一个水果列表,你可以选择:创建一个带有水果列表的结构和一个映射来在水果和数量之间建立联系,或者根据映射的键提取一个列表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 2013-12-16
  • 2022-01-15
  • 2019-02-06
相关资源
最近更新 更多