1. boost::unorder_map 实现自定义KEY

 // boostLibTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h" #include <boost/functional/hash.hpp>
#include <boost/unordered_map.hpp>
#include <iostream>
#include <set>
#include <map>
#include <unordered_map> using namespace std; struct Test
{
int _id;
string _name;
set<int> _nums; Test(int id, string name, set<int> nums = set<int>()) :
_id(id), _name(name), _nums(nums)
{
}
}; bool operator==(const Test& ts1, const Test& ts2)
{
return ts1._id == ts2._id && ts1._name == ts2._name && ts1._nums == ts2._nums;
} size_t hash_value(const Test& test)
{
std::size_t seed = ;
boost::hash_combine(seed, std::hash_value(test._id));
boost::hash_combine(seed, std::hash_value(test._name));
for (auto& iter : test._nums){
boost::hash_combine(seed, std::hash_value(iter));
}
return seed;
} int _tmain(int argc, _TCHAR* argv[])
{
set<int> sets = {,,,,};
boost::unordered_map<Test, string> map;
map.insert(make_pair(Test(, "abc", sets), ""));
map.insert(make_pair(Test(, "def", sets), ""));
map.insert(make_pair(Test(, "egh", sets), ""));
map.insert(make_pair(Test(, "ijk", sets), ""));
map.insert(make_pair(Test(, "lmn", sets), "")); auto iter = map.find(Test(, "egh", sets));
if (iter != map.end()){
cout << "Find !" << endl;
}
else{
cout << "Not Find !" << endl;
} getchar();
return ;
}

输出结果为: Find !

===============================================================

2. std::unorder_map 实现自定义KEY

 // boostLibTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h" #include <boost/functional/hash.hpp>
#include <boost/unordered_map.hpp>
#include <iostream>
#include <set>
#include <map>
#include <unordered_map> using namespace std; struct Test
{
int _id;
string _name;
set<int> _nums; Test(int id, string name, set<int> nums = set<int>()) :
_id(id), _name(name), _nums(nums)
{
}
}; namespace std
{
template<>
struct hash<Test>
: public _Bitwise_hash < Test >
{ // hash functor for RECT
}; inline bool operator == (const Test &ts1, const Test &ts2) _NOEXCEPT
{
return ts1._id == ts2._id && ts1._name == ts2._name && ts1._nums == ts2._nums;
}
} int _tmain(int argc, _TCHAR* argv[])
{
set<int> sets = {,,,,};
std::unordered_map<Test, string> map;
map.insert(make_pair(Test(, "abc", sets), ""));
map.insert(make_pair(Test(, "def", sets), ""));
map.insert(make_pair(Test(, "egh", sets), ""));
map.insert(make_pair(Test(, "ijk", sets), ""));
map.insert(make_pair(Test(, "lmn", sets), "")); auto iter = map.find(Test(, "egh", sets));
if (iter != map.end()){
cout << "Find !" << endl;
}
else{
cout << "Not Find !" << endl;
} getchar();
return ;
}

奇怪的地方来了,std的结果有时候是 Find ! 有时候是 Not Find !

没弄明白这个std::unorder_map怎么回事,我自己直接用了boost::unorder_map

unorder_map 自定义KEY的更多相关文章

  1. zabbix自定义key

    zabbix自定义key 1.修改客户端配置文件 #vi /opt/zabbix/etc/zabbix_agentd.conf Include=/opt/zabbix/etc/zabbix_agent ...

  2. 自学Zabbix3.5.5-监控项item-User parameters(自定义key)

    为什么要自定义KEY,即User parameters功能 有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法.我们可以在客户端配置文件zabb ...

  3. Zabbix常用key和自定义key的讲解

    zabbix中常用到的几个key: 1.监控端口的:net.tcp.port[,3306],可以在服务器端对被监控端测试. /usr/local/zabbix/bin/ -s192.168.8.120 ...

  4. zabbix使用自定义key进行监控

    我的zabbix-server是安装在另一台虚拟机上的,用来监控下图中的这台虚拟机 先修改zabbix的客户端配置文件,增加UserParameter那行,这里我只是用来测试,所以就随便起了一个名为p ...

  5. zabbix 通过自定义key完成网卡监控

    创建执行脚本: # cat /etc/zabbix/monitor_scripts/network.sh #!/bin/bash #set -x usage() { echo "Useage ...

  6. zabbix 自定义 key (转)

    转自:http://www.cnblogs.com/miclesvic/p/6164303.html 1.在zabbix_agent端zabbix_agentd.conf配置文件中增加自定义Key(/ ...

  7. 监控服务器cpu、磁盘、模板以及自定义key

    一.检测主机存活 net.tcp.service.perf[tcp,,] Float型 返回0代表端口挂了 zabbix fping要开启sudo权限之类比较不方便 二.监控CPU负载 监控load ...

  8. Zabbix 自定义Key

    系统:Linux Centos 7.4 x64.Windos 2008 x64 服务:Zabbix 3.0.16 说明1:自定义Key 主要通过自定义 脚本 或者 命令 来实现自定义监控类型,需要在a ...

  9. zabbix主动模式,自定义Key监控 zabbix采集器

    主动模式不是只能用模板提供的标准检测器方式 zabbix-agent两种运行方式即主动模式和被动模式.默认被动模式. 两种模式是相对 客户端 角度来说的. 被动模式:等待server来取数据,可以使用 ...

随机推荐

  1. ubuntu 系统升级 cmake

    由于Ubuntu14.04的cmake版本为2.8.x,而如果需要cmake3.x版本时,无法生成makefile,有两种方法可以安装cmake3.4.1: 方法1: sudo apt-get ins ...

  2. Android学习之基础知识十三 — 四大组件之服务详解第二讲(完整版的下载示例)

    上一讲学习了很多关于服务的使用技巧,但是当在真正的项目里需要用到服务的时候,可能还会有一些棘手的问题让你不知所措.接下来就来综合运用一下,尝试实现一下在服务中经常会使用到的功能——下载. 在这一讲我们 ...

  3. 使用HttpClient和Jsoup实现一个简单爬虫

    一直很想了解一下爬虫这个东西的,完全是出于兴趣,其实刚开始是准备用python的,但是由于种种原因选择了java,此处省略很多字... 总之,如果你想做一件事情的话就尽快去做吧,千万不要把战线拉得太长 ...

  4. Django学习篇(web框架的由来)

    Python的WEB框架有 Django.Tornado.Flask 等多种 ,Django相较与其他WEB框架其优势为: 大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多 ...

  5. POJ1275 Cashier Employment 二分、差分约束

    传送门 题意太长 为了叙述方便,将题意中的$0$点看作$1$点,$23$点看做$24$点 考虑二分答案(其实从小到大枚举也是可以的) 设$x_i$是我们选的雇员第$i$小时开始工作的人数,$s_i$是 ...

  6. 基于tensorflow的躲避障碍物的ai训练

    import pygameimport randomfrom pygame.locals import *import numpy as npfrom collections import deque ...

  7. China Intelligent Office Summit(2018.11.21)

    时间:2018.11.21地点:中关村软件园国际会议中心

  8. C# 枚举基本用法及扩展方法

    没什么好说的,都是些基础! 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; usi ...

  9. Luogu P1337 [JSOI2004]平衡点 / 吊打XXX

    一道入门模拟退火的经典题,还是很考验RP的 首先我们发现神TM这道题又和物理扯上了关系,其实是一道求广义费马点的题目 首先我们可以根据物理知识得到,当系统处于平衡状态时,系统的总能量最小 又此时系统的 ...

  10. 案例学python——案例一:抓图

    最近项目不那么紧张,有时间来研究一下Python,先前断断续续的自学了一段时间,有些浅基础.刚好在码云上看到比较适合的案例,跟着案例再往前走一波. 案例一:爬虫抓图 开发工具:PyCharm    脚 ...