unorder_map 自定义KEY
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的更多相关文章
- zabbix自定义key
zabbix自定义key 1.修改客户端配置文件 #vi /opt/zabbix/etc/zabbix_agentd.conf Include=/opt/zabbix/etc/zabbix_agent ...
- 自学Zabbix3.5.5-监控项item-User parameters(自定义key)
为什么要自定义KEY,即User parameters功能 有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法.我们可以在客户端配置文件zabb ...
- Zabbix常用key和自定义key的讲解
zabbix中常用到的几个key: 1.监控端口的:net.tcp.port[,3306],可以在服务器端对被监控端测试. /usr/local/zabbix/bin/ -s192.168.8.120 ...
- zabbix使用自定义key进行监控
我的zabbix-server是安装在另一台虚拟机上的,用来监控下图中的这台虚拟机 先修改zabbix的客户端配置文件,增加UserParameter那行,这里我只是用来测试,所以就随便起了一个名为p ...
- zabbix 通过自定义key完成网卡监控
创建执行脚本: # cat /etc/zabbix/monitor_scripts/network.sh #!/bin/bash #set -x usage() { echo "Useage ...
- zabbix 自定义 key (转)
转自:http://www.cnblogs.com/miclesvic/p/6164303.html 1.在zabbix_agent端zabbix_agentd.conf配置文件中增加自定义Key(/ ...
- 监控服务器cpu、磁盘、模板以及自定义key
一.检测主机存活 net.tcp.service.perf[tcp,,] Float型 返回0代表端口挂了 zabbix fping要开启sudo权限之类比较不方便 二.监控CPU负载 监控load ...
- Zabbix 自定义Key
系统:Linux Centos 7.4 x64.Windos 2008 x64 服务:Zabbix 3.0.16 说明1:自定义Key 主要通过自定义 脚本 或者 命令 来实现自定义监控类型,需要在a ...
- zabbix主动模式,自定义Key监控 zabbix采集器
主动模式不是只能用模板提供的标准检测器方式 zabbix-agent两种运行方式即主动模式和被动模式.默认被动模式. 两种模式是相对 客户端 角度来说的. 被动模式:等待server来取数据,可以使用 ...
随机推荐
- Android学习之基础知识十二 — 第二讲:网络编程的最佳实践
上一讲已经掌握了HttpURLConnection和OkHttp的用法,知道如何发起HTTP请求,以及解析服务器返回的数据,但是也许你还没发现,之前我们的写法其实是很有问题的,因为一个应用程序很可能会 ...
- C#以管理员用户打开某个程序
static void Main(string[] args) { string path = @"C:\Windows\AppPatch\AppLoc.exe"; Process ...
- LeetCode263:Ugly Number
public bool IsUgly(int num) { if(num<1) return false; while(num>1) { if(num%2==0) { num=num/2; ...
- SPOJ GSS(Can you answer the Queries)系列 7/8
GSS1 线段树最大子段和裸题,不带修改,注意pushup. 然而并不会猫树之类的东西 #include<bits/stdc++.h> #define MAXN 50001 using n ...
- 【转】ORA-00257:archiver error. 错误的处理方法
出现这个问题的原因一般是日志满了.这里以用户tt为例: 一.用sys用户登录 sqlplus sys/pass@tt as sysdba 二.看看archiv log所在位置 SQL> show ...
- 通过Jekins执行bat脚本始终无法完成
问题描述 最近在研究Devops工作流,中间有一个环节是自动发布版本的,我们使用PipeLine调用Jekins任务,最终执行bat脚本,但在执行Jekins任务的时候,任务总是完成不了,导致DBA在 ...
- 【php增删改查实例】第十六节 - 用户新增
6.1工具栏 <div id="toolbar"> <a href="javascript:openDialog()" class=" ...
- SJP's Blog
This is SJP's blog. Here is a mirror web of his blog.
- .NetCore实践篇:成功解决分布式监控ZipKin聚合依赖问题(三)
前言 读本篇文章之前,可以先读前两篇文章.为了照顾没看过的朋友,我也会稍作复习. 思考大纲: .Net架构篇:思考如何设计一款实用的分布式监控系统? 实践篇一:.NetCore实践篇:分布式监控客户端 ...
- vsftpd虚拟账户配置
1. 概述 FTP是文件传输协议,在内外网的文件传输中使用广泛. 本篇博客主要介绍FTP服务器的部署和测试. 2. 软件环境部署 查看系统是否安装FTP软件(vsftpd),执行命令:rpm -qa ...