C++标准提供了map和multi_map,把key映射到value;
    但是这种映射是单向的,只能是key到value,不能反过来;
    boost.bimap扩展了标准库映射型容器,提供双向映射能力,功能强大;
    bimap提供的映射关系有两个视图:左视图和右视图;
    更多详细用法请参考《Boost程序库完全开发指南》

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
/* boost_bimap.cpp
    C++标准提供了map和multi_map,把key映射到value;
    但是这种映射是单向的,只能是key到value,不能反过来;
    boost.bimap扩展了标准库映射型容器,提供双向映射能力,功能强大;
    bimap提供的映射关系有两个视图:左视图和右视图;
    更多详细用法请参考《Boost程序库完全开发指南》
*/

#include <iostream>
#include <string>
#include <vector>
#include <cassert>

#include <boost/bimap.hpp>
#include <boost/typeof/typeof.hpp>

using namespace std;
using namespace boost;

template<class T>  
void print_map(T &m)  
{   
    for (BOOST_AUTO(pos, m.begin()); pos!=m.end(); ++pos)  
    {  
        cout << pos->first << "--------" << pos->second << endl;  
    }  
}

int main(void)
{
    bimap<int, string> bm;

bm.left.insert(make_pair(, "Zhang"));
    bm.left.insert(make_pair(, "Wang"));

for(BOOST_AUTO(pos, bm.left.begin()); 
        pos != bm.left.end();
        ++pos)
    {
        cout << "Left[" << pos->first << "]=" << pos->second << endl; 
    }

bm.right.insert(make_pair());
    bm.right.insert(make_pair());

for(BOOST_AUTO(pos, bm.left.begin()); 
        pos != bm.left.end();
        ++pos)
    {
        cout << "Right[" << pos->first << "]=" << pos->second << endl; 
    }

print_map(bm.left);
    print_map(bm.right);

cin.get();
    ;
}

boost容器bimap简单使用的更多相关文章

  1. C++关联容器<map>简单总结

    C++关联容器<map>简单总结 map提供大小可变的关联容器,基于关联键值高效检索元素值.当你处理键值对的数据是,都可以考虑使用map关联容器. 特点: 大小可变的关联容器,基于关联键值 ...

  2. C++线性序列容器<vector>简单总结

    C++线性序列容器<vector>简单总结 vector是一个长度可变的数组,使用的时候无须声明上限,随着元素的增加,Vector的长度会自动增加:Vector类提供额外的方法来增加.删除 ...

  3. boost::bind的简单实现

    前言 在上一篇blog中简单的实现了boost::function,支持带有2个参数的函数/函数指针,函数对象,函数适配器/bind类,以及带有1个参数的成员函数指针. 本文接着来介绍如何实现一个简单 ...

  4. set容器与map容器的简单应用

    set容器中一些函数,取自百度其他大佬已总结好的,如有侵权,请联系删除! set的各成员函数列表如下: c++ stl容器set成员函数:begin()--返回指向第一个元素的迭代器 c++ stl容 ...

  5. Winform MDI窗体容器 权限 简单通讯

    MDI窗体容器 权限  using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...

  6. Unity IOC容器的简单应用(转)

    转自:http://blog.csdn.net/wanzhuan2010/article/details/7763280 Unity是Unity是微软patterns& practices组用 ...

  7. Spring容器的简单实现(IOC原理)

    引言:容器是什么?什么是容器?Spring容器又是啥东西?我给Spring容器一个对象名字,为啥能给我创建一个对象呢? 一.容器是装东西的,就像你家的水缸,你吃饭的碗等等. java中能作为容器的有很 ...

  8. docker简单入门之使用docker容器部署简单的java web开源项目jpress博客程序

    一.在centos7.3上安装docker 前置条件 x86_64-bit 系统 kernel 3.10+ .检查内核版本,返回的值大于3.10即可 [root@node1 ~]# uname -r ...

  9. boost::function的简单实现

    前言 boost::function和boost:bind是一对强大的利器.相信用过的童鞋多少有些体会. 虽然平时在用boost::function,但是用的时候心中总会一些不安,因为不知道它是怎么实 ...

随机推荐

  1. 使用python在WEB页面上生成EXCEL文件

    来自:http://blog.sina.com.cn/s/blog_5d18f85f0101bxo7.html 近日写的一个程序需要在WEB服务器上生成EXCEL文件供用户下载,研究了一下找到了以下比 ...

  2. Java之基础(1) - 编程中“为了性能”尽量要做到的一些地方

    最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源总结的一些在Ja ...

  3. 在SQL Server中调用.NET程序集

    需求是这样的,我在.net程序里操作数据时将一些字段数据加密了,这些数据是很多系统共用的,其中一delphi程序也需要用到,并且需要将数据解密,由于我在.net里加密的方式比较特殊,在delphi程序 ...

  4. 基于Verilog语言的FIR滤波【程序和理解】

    一直想找一个简单.清晰.明了的fir滤波器的设计,终于找到了一个可以应用的,和大家分享一下,有助于FPGA新手入门. 1.说道fir滤波器,滤波系数肯定是最重要的,因为后面程序中涉及到滤波系数问题,所 ...

  5. matplotlib极坐标系应用之雷达图

    #!/usr/bin/env python3 #-*- coding:utf-8 -*- ############################ #File Name: test.py #Autho ...

  6. js模块化规范AMD、CMD、CommonJS...

    1. AMD 1.1 什么是AMD? AMD 英文名 Asynchronous Module Definition ,中文名 异步模块定义 .这是一个浏览器模块化开发的规范. 由于浏览器环境执行环境的 ...

  7. CentOS 7下Java的SecureRandom种子初始化失败解决办法

    io.netty.util.internal.ThreadLocalRandom getInitialSeedUniquifierWARNING: Failed to generate a seed ...

  8. iOS swift String 换行显示

    在oc中换行的方式 NSString *str = @" aaaaa \ bbbbb \ cccc \ "; swift中这种方式不可用 ,swift中换行采用新的方双三引号 &q ...

  9. The Definitive Guide To Django 2 学习笔记(二) 第二个View 动态内容

    “Hello World”只是简单的展现了Django 基本的工作机制,但它不是动态的网页.第二个View我们将创建一个动态的网页,该页面上将展现当前的时间和日期. 该View需要做两件事,第一,计算 ...

  10. 分析并实现 360 P1路由器上的朋友专享网络 功能

    笔者分析了360 P1路由器上的朋友专享网络功能,发现其主要由如下子功能组成: 1. APP点击“立即开启”,则路由器会多出一个新的SSID:360朋友专享网络-8463.此SSID不加密:同时,原有 ...