C++屏蔽map自动排序
最近写项目时,发现map自动排序了,以前没注意这个问题,可能ms考虑到map查询效率问题,插入时候就自动按key排序,查找其内部构造,发现其是模板实现方式,咱们可以改一改模板就可以避免自动排序(万不得已才用,数据大不建议)
如果要屏蔽掉map的自带默认排序,我们需要重写以一个排序对象
#include <map>
#include <iostream>
template<class T>
struct DisableCompare : public std::binary_function<T, T, bool>
{
bool operator()(T lhs, T rhs) const
{
if (lhs == rhs)
return false;
return true;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
std::map<int, wstring,DisableCompare<int>> myMap;
myMap.insert(std::make_pair(2, L"ABC1"));
myMap.insert(std::make_pair(6, L"ABC2"));
myMap.insert(std::make_pair(8, L"ABC3"));
myMap.insert(std::make_pair(9, L"ABC4"));
myMap.insert(std::make_pair(1, L"ABC5"));
//也可以用下列模式插入
//myMap[1]=L"ABC5";
//myMap[12]=L"ABC121";
auto it = myMap.begin();
for (; it != myMap.end(); it++)
{
std::cout << it->first << std::endl;
}
return 0;
}
特别说明:
map底层是红黑树实现的,它的设计本就是按照插入值的大小来进行排序的,以加快查找速度,本文这样处理是违背了它的设计原则,所以在vs2013及以后版本,debug模式下,它会报错,release是正常的。
C++屏蔽map自动排序相关推荐
- “避开”std::map自动排序
说是 "避开",其实是利用他排序的特性: map<string, string> mymap;mymap.insert(pair<string, string&g ...
- c++map自动排序特性
c++中的map会自动根据first值排序,这样排好序后输出第一个用begin,输出最后一个用rbegin first支持int和string类型的排序,其原理应该是ascii(这一点我没有考证,反正 ...
- java map 自动排序_java Map排序问题
java 中,Map常见的有HashMap ,TreeMap等等,Map是一个接口,我们不能直接声明一个Map类型的对象,在实际开发 中,比较常用的Map性数据结构是HashMap和TreeMap,它 ...
- java map 自动排序_Java中Map的排序
Map的种类 在Java中,Map的主要作用是存储键值对.由于是根据键得到值,所以不允许键重复.它主要有如下几个类别: HashMap: 最常用的Map,它根据键的HashCode值存储数据,根据键可 ...
- C++ STL容器 map禁止自动排序
背景:key-value形式的数据,已经使用了map存储,后来要求读取时的顺序要和插入的顺序一致 方案一.再定义个数组,按顺序保存key (推荐) 方案二.map更换为unordered_ma ...
- Java 自动排序map_跟我学Java编程—应用自动排序的TreeMap
前面介绍了Map接口的实现类LinkedHashMap,LinkedHashMap存储的元素是有序的,可以保持元素的插入顺序,但不能对元素进行自动排序.在一些编程应用场景中,如果在数据的存储过程中,能 ...
- 解决数组转对象后,key自动排序
今天遇到个问题,将数组转为key value形式的对象后,key进行了自动排序,无法保持数组原有的顺序,所以这个时候就不能使用 Object,需要使用Map let arr= [{code: 'asd ...
- python set函数排序_python的set函数 Python中的set会自动排序
python中如何在set中添加元素?语句是什么 python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), inters ...
- Java8 对Map进行排序
前言: 随着Java 8 的 Stream 之后推出后可以很优雅实现Map的排序. 示例: final Map<String, Integer> wordCounts = new Hash ...
最新文章
- 转:strcat与strcpy与strcmp与strlen
- Fiddler抓取手机(app)https包
- cocos3 深入理解tank和子弹之间的关系
- Py之prettytable:prettytable的简介、安装、使用方法之详细攻略
- PyQt4编程之自定义插槽
- mfc点击按钮让对话框关闭_WinXP系统开始菜单中关机按钮消失的恢复教程
- python用schedule模块实现定时任务
- 位运算(、|、^、~、>>、<<)
- Angular2 的 View Encapsulation(样式封装)
- Win10系统如何在Word中添加新字体
- WPS Office 国际版 添加中文语言包 及相关问题
- java引用不同包下同名类_Java--一个类中引用不同包下同名类
- SpringBoot(一):项目概述
- 一分钟,华北科技学院会发生什么?
- UltraEdit 注册机注册
- 数字化风控的八个应用场景(上)
- CSS transform变形记
- ESP32的MQTT AT固件烧录+STM32以ESP32的MQTT AT固件的AT指令连接EMQX下mqtt服务器实现消息订阅和发布
- 原生js封装picker地址三级联动方法
- win7平台下QT软件的打包与发布(部署与安装) 打包成安装包样式