我想按键的绝对值来订购一个std::map
,下面的代码作为通常的自定义顺序
vector<int> A = {-4,4,-2,2};
auto cmp = [](int a, int b) { return abs(a) < abs(b); };
map<int, int, decltype(cmp)> m(cmp);
for (int x : A) m[x]++;
但结果是m = {{-4,2},{-2,2}}
。我不知道,为什么缺少键 4
和 2
。我想保留所有值,实际上我不关心 =
即 4,-4
和 -4,4
都可以为我。我只在值不同时才订购它们。
最佳答案
您的比较函数使您的 map 将键 4
和 -4
视为等同的。键 2
和 -2
也是如此,这样就可以解释您得到的结果,因为 map
中的键必须是唯一的。
关于c++ - 按键的绝对值排序 std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63094294/