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. Echo团队Alpha冲刺随笔 - 第四天

    项目冲刺情况 进展 前端:完成了差不多一半,小程序部分界面基本完工,WEB端也完成了一部分 后端:也完成了大半了 问题 后端文件上传还没解决 心得 进度还行,团队配合都还不错 今日会议内容 黄少勇 今 ...

  2. Objective-C 在main函数之前的过程

    main函数是我们所熟知的程序入口,Java.Python.C++等,虽语法各异,但皆是如此.然而,程序真正的起点并非main函数,在此之前,就已经干了很多事情. 1.在main函数打个断点,从调用栈 ...

  3. appbar导航

    import 'package:flutter/material.dart';import 'dart:ui'; void main()=>runApp(MyApp()); class MyAp ...

  4. 树莓派学习笔记(6):让Raspbian支持中文、禁用休眠

    引自:http://www.leiphone.com/news/201406/raspberry-pi-hands-on.html 一直令我很奇怪的是,即使你用Debian的安装光碟安装系统,如果你把 ...

  5. <转>jmeter(十七)目录结构

    之前了解过jmeter的目录结构,但只知道一些常用的配置文件,看到一篇介绍的比较详细的博客,就转载过来,当然,其实是自己懒得再去搜集更多资料慢慢看了,时间不够用... 原文链接:http://www. ...

  6. tab键设置为空4格和自动缩进

    .打开vim配置文件~@vim etc/vim/vimrc 二 .设置tab和自动缩进即:添加如下内容 "set tab by charly!" softtabstop= (注意等 ...

  7. CF1110E Magic Stones 差分

    传送门 将原数组差分一下,设\(d_i = c_{i+1} - c_i\) 考虑在\(i\)位置的一次操作会如何影响差分数组 \(d_{i+1}' = c_{i+1} - (c_{i+1} + c_{ ...

  8. BZOJ1816 CQOI2010 扑克牌 贪心

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1816 题意:有$N$堆牌,第$i$堆牌有$c_i$张牌,还有$M$张$joker$,每 ...

  9. 实现Cookie集合

    以前Insus.NET有在博客上有写过一篇<在程序中使用Cookie集合>http://www.cnblogs.com/insus/archive/2011/05/25/2055531.h ...

  10. JVM规范系列第3章:为Java虚拟机编译

    Oracle 的 JDK 包括两部分内容:一部分是将 Java 源代码编译成 Java 虚拟机的指令集的编译器,另一部分是用于Java 虚拟机的运行时环境. 第一部分应该说的是 Javac 这个前置编 ...