boost unordered
Boost.Unordered provides the classes boost::unordered_set, boost::unordered_multiset, boost::unordered_map, and boost::unordered_multimap. These classes are identical to the hash containers that were added to the standard library with C++11.
1. boost::unordered_set
#include <boost/unordered_set.hpp>
#include <string>
#include <iostream> int main() {
boost::unordered_set<std::string> set;
set.emplace("cat");
set.emplace("shark");
set.emplace("spider"); for (const std::string& s : set) {
std::cout << s << std::endl;
} std::cout << set.size() << std::endl;
std::cout << set.max_size() << std::endl; std::cout << std::boolalpha << (set.find("cat") != set.end()) << std::endl;
std::cout << set.count("shark") << std::endl;
return ;
}
输出为:
spider
shark
cat
3
1152921504606846975
true
1
boost::unordered_set can be replaced with std::unordered_set, boost::unordered_set doesn't differ from std::ordered_set.
2. boost::unordered_map
#include <boost/unordered_map.hpp>
#include <string>
#include <iostream> int main() {
boost::unordered_map<std::string, int> map;
map.emplace("cat", );
map.emplace("shark", );
map.emplace("spider", ); for (const auto& p : map) {
std::cout << p.first << ";" << p.second << std::endl;
} std::cout << map.size() << std::endl;
std::cout << map.max_size() << std::endl; std::cout << std::boolalpha << (map.find("cat") != map.end()) << std::endl;
std::cout << map.count("shark") << std::endl;
return ;
}
输出为:
spider;8
shark;0
cat;4
3
1152921504606846975
true
1
3. User-defined type with Boost.Unordered
#include <boost/unordered_set.hpp>
#include <string>
#include <cstddef> struct animal {
std::string name;
int legs;
}; bool operator==(const animal& lhs, const animals& rhs) {
return lhs.name == rhs.name && lhs.legs == rhs.legs;
} std::size_t hash_value(const animal& a) {
std::size_t seed = ;
boost::hash_value(seed, a.name);
boost::hash_value(seed, a.legs);
return seed;
} int main() {
boost::unordered_set<animal> animals; animals.insert({"cat", });
animals.insert({"shark", });
animals.insert({"spider", }); return ;
}
Because the hash function of boost::unordered_set doesn't know the class animal, hash values can't be automatically calculate for elements of this type. That's why a hash function must be defined-otherwise the example can't be compiled.
In adddition to defining hash_value(), you need to make sure two objects can be compared using==. That't why the operator== is overloaded for animal.
boost unordered的更多相关文章
- unordered容器
1.散列容器(hash container) 散列容器通常比二叉树的存储方式可以提供更高的访问效率. #include <boost/unordered_set.hpp> #includ ...
- 基于BOOST 实现并发服务器框架
一:设计思路 本服务器框架使用 UDP 传输协议,程序柱线程等待客户端数据,并将数组存取队列缓冲区.另外可开启多个工作线程,工作线程可以依据具体项目实现不同的功能 ,例如可以将队列缓冲区中的数据逐个取 ...
- #include <boost/unordered_set.hpp>
boost.unordered在C++标准容器std::set,std::multiset,std::map和std::multimap的基础上多实现了四个容器:boost::unordered_se ...
- Win10 VS2013 PCL1.8.1和依赖项VTK8.0.1, QHuall(2.15.2), FLANN1.9.1,Boost1.59.0,Zbil1.2.11和libPNG1.6.34编译安装
编译和安装过程最好使用管理员权限去操作,避免不必要的错误. 一般而言为了区分Debug和Release库,添加输入变量 Name: CMAKE_DEBUG_POSTFIX Type: STRING V ...
- unorder_set<typename T> 学习
转自http://blog.csdn.net/mmzsyx/article/details/8240071 散列容器(hash container): 通常比二叉树的存储方式可以提供更高的访问效率.# ...
- Serializable unordered set
Serializable unordered set 可序列化哈希set #include <boost/algorithm/string/predicate.hpp> #include ...
- c++新特性与boost
<Boost程序库探秘——深度解析C++准标准库>之试读 前一阵子还看到一篇文章,说C#要重蹈C++的覆辙,这里说的C++的覆辙是什么呢?是指C++语言过于臃肿的功能特性,导致学习人员的流 ...
- Boost简介
原文链接: 吴豆豆http://www.cnblogs.com/gdutbean/archive/2012/03/30/2425201.html Boost库 Boost库是为C++语言标准库提供扩 ...
- Boost 1.61.0 Library Documentation
http://www.boost.org/doc/libs/1_61_0/ Boost 1.61.0 Library Documentation Accumulators Framework for ...
随机推荐
- 在java中
// 进入prompt回调 public class JSBridgeWebChromeClient extends WebChromeClient { @Override public boolea ...
- How to pass values across the pages in ASP.net without using Session
https://stackoverflow.com/questions/14956027/how-to-pass-values-across-the-pages-in-asp-net-without- ...
- MySQL5.6同步指定数据库
需求:生产环境同步sakila (root@localhost) [(none)]> show databases;+--------------------+| Database |+---- ...
- Wildfly安装以及集成idea(mac)
文章目录 Linux发布运行 下载 集成idea Linux发布运行 首先说一下在linux环境,只需要将war包上传到wildfly-8.2.0.Final/standalone/deploymen ...
- Nginx 模块 - ngx_http_rewrite_module
原文地址 ngx_http_rewrite_module 模块用于通过 PCRE 正则表达式改变请求 URI,返回重定向并可以有条件地选择配置. break.if.return.rewrite 以及 ...
- PHP批量生成底部带编号二维码(二维码生成+文字生成图片+图片拼接合并)
PHP批量生成带底部编号二维码(二维码生成+文字生成图片+图片拼接合并) 需求: 输入编号如 : cb05-0000001 至 cb05-0000500 批量生成 以编号为名称的下图二维码,然后压缩 ...
- 统计Git
公司需求统计Mos代码行数 方法一:用git #!/bin/bash read -p "输入你要统计mos的分支:" branch Mos_Project=(uusafe-prod ...
- CCNA 之 一 网络基础
计算机概念 很早期的计算机是一个庞然大物,可能都有几层楼那么高,随着技术的发展.更新,体型就变得越来越小,也越来越普及. 这个时候计算机与计算机之间就需要数据交流和信息的共享,早期是美国那边主要用于大 ...
- python爬取企业登记业务
import requests from lxml import etree import csv for i in range(10, 990, 10): url = "http://12 ...
- Topcoder SRM653div2
A . 250 Problem Statement Some people are sitting in a row. Each person came here from some cou ...