gpt4 book ai didi

c++ - 按大小排序 map

转载 作者:行者123 更新时间:2023-11-30 02:10:15 25 4
gpt4 key购买 nike

我有类似的 map :

map<int, map<int, map<int, int> > > myMap;

order-num | id | order-num-of-relation | relation-id
-----------------------------------------------------
0 | 1 | 0 | 2
-----------------------------------------------------
1 | 2 | 0 | 1
-----------------------------------------------------
| | 1 | 3
-----------------------------------------------------
2 | 3 | 0 | 2
-----------------------------------------------------

1(1), 2(2), 3(1)

我需要根据最后一张 map 的大小(order-num-of-relation | relation-id)对这张 map 进行排序(更改“order-num”)。

我只需要这样做:

order-num | id | order-num-of-relation | relation-id
-----------------------------------------------------
0 | 1 | 0 | 2
-----------------------------------------------------
1 | 3 | 0 | 2
-----------------------------------------------------
2 | 2 | 0 | 1
-----------------------------------------------------
| | 1 | 3
-----------------------------------------------------

1(1), 3(1), 2(2)

我可以使用“排序”函数并在此处传递自己的排序函数(我可以在其中检查大小并返回真/假),还是我必须编写明确的排序算法?

最佳答案

您不会/不能对 map 进行排序。它们根据模板参数的可选第三个参数自动按键排序,这是一个函数对象类,用于比较两个元素以确定哪个应该先出现。 (如果第一个应该在第二个之前,它应该返回 true,否则返回 false)

所以你可以这样使用:

struct myCompare
{
bool operator() const (const map<int,int> & lhs, const map<int,int> & rhs)
{
return lhs.size() < rhs.size();
}
};

但是自map<int,int>是你的值(value),而不是你的 key ,这对你来说并不完全适用。

关于c++ - 按大小排序 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4770043/

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