c++ - std::unordered_map 未按预期运行
问题描述
std::unordered_map<std::string,std::string> mymap;
mymap.insert(std::make_pair("ELEMENTTYPE", "NEWINTERFACE"));
mymap.insert(std::make_pair("STYLEFILE", "Style_Light.txt"));
mymap.insert(std::make_pair("ELEMENTNAME", "IN1"));
mymap.insert(std::make_pair("POSITIONX", "0"));
mymap.insert(std::make_pair("POSITIONY", "0"));
mymap.insert(std::make_pair("SIZEX", "50"));
mymap.insert(std::make_pair("SIZEY", "50"));
我希望地图按该顺序包含这些元素,但相反,它是:
-尺寸
-元素类型
-样式文件
-尺寸
-位置X
-位置
我很困扰; 为什么要std::unordered_map
订购我的元素?
解决方案
术语 unordered instd::unordered_map
表示顺序未指定。您不能依赖unordered_*
容器的顺序。所有关联容器(将值映射到键的容器)都会弄乱元素的顺序,因为这种顺序允许它们在按键搜索时获得更好的性能,这通常是使用映射的目标。
如果您想自己控制订单,可以使用std::vector<std::pair<std::string, std::string>>
. 您将有一组对,按照您想要的方式排序,但是您放弃了find
关联容器提供的快速实现。
推荐阅读
- php - 使用 PHP 从 df -h --total 捕获特定值
- ssl - 使用 openssl 创建 SSL 证书
- python-3.x - 如何将日期时间值与 int 进行比较
- markerclusterer - OverlappingMarkerSpiderfier 和 MarkerClusterer 和 geocomplete
- google-analytics - 自定义报告 #googleanalytics 正则表达式
- javascript - 检查我的目标光标是否与我的游戏“敌人”组件重叠
- sql-server - 当触发器中发生异常时,SQL Server 是否会创建日志条目?
- r - 有没有办法显着加快 R 包 stringdist 的速度,例如使用 Rcpp?
- python - 用于插入整数的格式化打印函数返回错误。我该如何解决?
- angular - 我如何将单个单词显示为角度完整消息中的超链接