pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

如何首先按值對(duì) std::map 排序,然后按鍵排序?

How can I sort a std::map first by value, then by key?(如何首先按值對(duì) std::map 排序,然后按鍵排序?)
本文介紹了如何首先按值對(duì) std::map 排序,然后按鍵排序?的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

我需要先按值對(duì) std::map 進(jìn)行排序,然后再按鍵排序.該地圖包含如下數(shù)據(jù):

I need to sort a std::map by value, then by key. The map contains data like the following:

  1  realistically
  8         really
  4         reason
  3     reasonable
  1     reasonably
  1     reassemble
  1    reassembled
  2      recognize
 92         record
 48        records
  7           recs

我需要按順序獲取值,但關(guān)鍵是在值按順序排列后,鍵需要按字母順序排列.我該怎么做?

I need to get the values in order, but the kicker is that the keys need to be in alphabetical order after the values are in order. How can I do this?

推薦答案

std::map 將按 keys 對(duì)其元素進(jìn)行排序.排序時(shí)它不關(guān)心 values.

std::map will sort its elements by keys. It doesn't care about the values when sorting.

您可以使用 std::vector<std::pair<K,V>> 然后使用 std::sort 后跟 std::stable_sort 對(duì)其進(jìn)行排序:

You can use std::vector<std::pair<K,V>> then sort it using std::sort followed by std::stable_sort:

std::vector<std::pair<K,V>> items;

//fill items

//sort by value using std::sort
std::sort(items.begin(), items.end(), value_comparer);

//sort by key using std::stable_sort
std::stable_sort(items.begin(), items.end(), key_comparer);

第一個(gè)排序應(yīng)該使用std::sort,因?yàn)樗?code>nlog(n),然后使用std::stable_sortn(log(n))^2 在最壞的情況下.

The first sort should use std::sort since it is nlog(n), and then use std::stable_sort which is n(log(n))^2 in the worst case.

請(qǐng)注意,雖然選擇 std::sort 是出于性能原因,但需要 std::stable_sort 才能正確排序,因?yàn)槟M粗蹬判虮槐4?

Note that while std::sort is chosen for performance reason, std::stable_sort is needed for correct ordering, as you want the order-by-value to be preserved.

@gsf 在評(píng)論中指出,如果您選擇首先比較 values 的比較器,則可以使用 only std::sort,并且如果它們相等,則對(duì) keys 進(jìn)行排序.

@gsf noted in the comment, you could use only std::sort if you choose a comparer which compares values first, and IF they're equal, sort the keys.

auto cmp = [](std::pair<K,V> const & a, std::pair<K,V> const & b) 
{ 
     return a.second != b.second?  a.second < b.second : a.first < b.first;
};
std::sort(items.begin(), items.end(), cmp);

那應(yīng)該是有效的.

但是等等,有一個(gè)更好的方法:存儲(chǔ) std::pair 而不是 std::pair 然后你根本不需要任何比較器—std::pair 的標(biāo)準(zhǔn)比較器就足夠了,因?yàn)樗紫缺容^ first(即 V)然后secondK:

But wait, there is a better approach: store std::pair<V,K> instead of std::pair<K,V> and then you don't need any comparer at all — the standard comparer for std::pair would be enough, as it compares first (which is V) first then second which is K:

std::vector<std::pair<V,K>> items;
//...
std::sort(items.begin(), items.end());

那應(yīng)該很好用.

這篇關(guān)于如何首先按值對(duì) std::map 排序,然后按鍵排序?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Assertion failed (size.widthgt;0 amp;amp; size.heightgt;0)(斷言失敗(size.width0 amp;amp; size.height0))
Rotate an image in C++ without using OpenCV functions(在 C++ 中旋轉(zhuǎn)圖像而不使用 OpenCV 函數(shù))
OpenCV: process every frame(OpenCV:處理每一幀)
Why can#39;t I open avi video in openCV?(為什么我不能在 openCV 中打開(kāi) avi 視頻?)
OpenCV unable to set up SVM Parameters(OpenCV 無(wú)法設(shè)置 SVM 參數(shù))
Convert a single color with cvtColor(使用 cvtColor 轉(zhuǎn)換單一顏色)
主站蜘蛛池模板: 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 沈阳真空机_沈阳真空包装机_沈阳大米真空包装机-沈阳海鹞真空包装机械有限公司 | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 食品无尘净化车间,食品罐装净化车间,净化车间配套风淋室-青岛旭恒洁净技术有限公司 | 真空乳化机-灌装封尾机-首页-温州精灌| 硅胶管挤出机厂家_硅胶挤出机生产线_硅胶条挤出机_臣泽智能装备 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 天津散热器_天津暖气片_天津安尼威尔散热器制造有限公司 | 河南档案架,档案密集架,手动密集架,河南密集架批发/报价 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 桨叶搅拌机_螺旋挤压/方盒旋切造粒机厂家-无锡市鸿诚输送机械有限公司 | 珠海白蚁防治_珠海灭鼠_珠海杀虫灭鼠_珠海灭蟑螂_珠海酒店消杀_珠海工厂杀虫灭鼠_立净虫控防治服务有限公司 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 干法制粒机_智能干法制粒机_张家港市开创机械制造有限公司 | 井式炉-台车式回火炉-丹阳市电炉厂有限公司 | 1000帧高速摄像机|工业高速相机厂家|科天健光电技术 | 威实软件_软件定制开发_OA_OA办公系统_OA系统_办公自动化软件 | 电力测功机,电涡流测功机,磁粉制动器,南通远辰曳引机测试台 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | 小型气象站_便携式自动气象站_校园气象站-竞道气象设备网 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 免费B2B信息推广发布平台 - 推发网 | 篷房|仓储篷房|铝合金篷房|体育篷房|篷房厂家-华烨建筑科技官网 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | 钢制暖气片散热器_天津钢制暖气片_卡麦罗散热器厂家 | 自清洗过滤器,浅层砂过滤器,叠片过滤器厂家-新乡市宇清净化 | 辐射色度计-字符亮度测试-反射式膜厚仪-苏州瑞格谱光电科技有限公司 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 东莞办公家具厂家直销-美鑫【免费3D效果图】全国办公桌/会议桌定制 | 成人纸尿裤,成人尿不湿,成人护理垫-山东康舜日用品有限公司 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | 环氧树脂地坪_防静电地坪漆_环氧地坪漆涂料厂家-地壹涂料地坪漆 环球电气之家-中国专业电气电子产品行业服务网站! | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 无负压供水设备,消防稳压供水设备-淄博创辉供水设备有限公司 | Honsberg流量计-Greisinger真空表-气压计-上海欧臻机电设备有限公司 | 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 一礼通 (www.yilitong.com)-企业礼品解决方案一站式服务平台 | 工控机-图像采集卡-PoE网卡-人工智能-工业主板-深圳朗锐智科 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 |