c++ - 按 key 的绝对值对 std::map 排序
问题描述
我想std::map
用下面的代码按 key 的绝对值订购一个作为通常的定制订单
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
失踪。我想保留所有价值观,实际上我并不关心=
ie4,-4
并且-4,4
对我来说都可以。我只在值不同时订购它们。
解决方案
4
您的比较功能使您的地图将键-4
视为等效项。同上 键2
和-2
,这样就解释了你得到的结果,因为 a 中的键map
必须是唯一的。
推荐阅读
- javascript - 如何按选择的顺序将多个文件上传到 Firebase 存储?
- git - docker-compose SSL 证书问题:从 git repo 构建时的自签名证书
- python - 导入时如何使odoo计算关系字段自动计算?
- javascript - 如何按字母顺序对下拉菜单项进行排序?
- matlab - 如何使用 Matlab APP DESIGNER 在用户界面中同时显示两个单独的图像?
- r - 反转翻转的 x 轴
- pandas - 使用多索引按时间段对数据帧进行分组
- python - 向 Celery eta 任务发送 2 个参数
- javascript - 如何让多个提供者或状态仅可用于部分布局
- wpf - 按钮未占用全部空间