【发布时间】:2022-10-28 20:01:18
【问题描述】:
我遇到了一个问题,我需要存储两个值,一个 id 和另一个它的影响,并且 id 应该是随机访问的。也应该根据影响力排序,如果两个影响力相同,则根据id排序。考虑到这些事情,我使用了地图,但有没有办法实际做到这一点?
我在比较器和地图下方尝试过,但它给出了错误
struct cmp
{
bool comparator()(const pair<int,int>a,const pair<int,int>b)
{
if(a.second==b.second) return a.first<b.first;
else return a.second<b.second;
}
};
unordered_map<int,int,cmp>m;
【问题讨论】:
-
std::map调用它与它存储的std::pairs 的first进行比较 -
std::map基于键排序。 -
抱歉,我使用了 unordered_map ,在问题中更改了它
-
unordered_map使用std::hashon钥匙默认情况下,因此它也不适合您的用例。您可能需要一个集合而不是地图。 -
@learner 基本上不可能有一个按某个值排序的容器,而该值也是可变的。如果更改该值,容器可能会变得未排序。您需要删除旧值并重新插入新值。
标签: c++ dictionary stl