【发布时间】:2015-06-30 18:20:03
【问题描述】:
我有一张由以下声明的地图:
std::map<std::string, std::map<std::string, std::string>> groupList;
我想使用子地图中的值对主地图进行排序(在本例中为“序列”。例如,如果地图最初看起来像这样(键与 groupID 相同):
(
[1] =>
(
[groupID] => 1
[sequence] => 0
[command] => DefaultState
)
[2] =>
(
[groupID] => 2
[sequence] => 2
[command] => Restart
)
[3] =>
(
[groupID] => 3
[sequence] => 1
[command] => Beep
)
)
我希望使用此比较器后的结果如下所示:
(
[1] =>
(
[groupID] => 1
[sequence] => 0
[command] => DefaultState
)
[3] =>
(
[groupID] => 3
[sequence] => 1
[command] => Beep
)
[2] =>
(
[groupID] => 2
[sequence] => 2
[command] => Restart
)
)
我曾问过一个类似的问题,但不是针对在定义地图时使用比较器功能。我的其他问题的解决方案涉及使用 Boost 库和表。我想保持这个相当简单,并使用我上面的定义。
不同的选项是使用序列值作为父映射的键,这可以做到,但我想将其用作最后一个选项。地图的顺序不能改变吗?我对 C++ 的这种思维方式很陌生,因为我很新,而且很难从像这样更容易的新语言中来。
提前致谢。
【问题讨论】:
-
你应该放弃对事物的 PHP 视图并为 C++ 数据结构建模
-
@DieterLücking 我知道,你是对的,但它比听起来要困难得多。我在做这个工作。如何在纸上为地图建模?
标签: c++ sorting dictionary