博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
multi_index_container 多索引容器
阅读量:6303 次
发布时间:2019-06-22

本文共 2426 字,大约阅读时间需要 8 分钟。

 

multi_index_container是c++ boost库中的一个多索引的容器。因工作中用到了,特来测试试用。

1 #include "stdafx.h" 2 #include "test.h" 3  4 #include 
5 #include
6 #include
7 #include
8 #include
9 10 using namespace std;11 using namespace boost;12 using namespace boost::multi_index;13 14 struct Book{15 int id;16 int date;17 string name;18 string author;19 20 Book(int id_,21 int date_,22 string name_,23 string author_)24 {25 id = id_;26 date = date_;27 name = name_;28 author = author_;29 }30 };31 32 typedef multi_index_container<33 Book,34 indexed_by<35 ordered_unique
>,36 ordered_non_unique
>,37 ordered_non_unique
>,38 ordered_non_unique
>39 > >BookContainer;40 41 typedef BookContainer::nth_index<0>::type Id_Index;42 typedef BookContainer::nth_index<1>::type Date_Index;43 typedef BookContainer::nth_index<2>::type Name_Index;44 typedef BookContainer::nth_index<3>::type Author_Index;45 46 int _tmain(int argc, _TCHAR* argv[])47 {48 BookContainer con;49 con.insert(Book(0, 2011, "math book", "jim"));50 con.insert(Book(2, 2008, "chinese book", "jam"));51 con.insert(Book(1, 2005, "english book", "roland"));52 con.insert(Book(3, 2010, "music book", "rose"));53 54 Id_Index& id_idx = con.get<0>();55 for (auto iter = id_idx.begin(); iter != id_idx.end(); iter++)56 {57 cout << iter->id << " "58 << iter->date << " "59 << iter->name << " "60 << iter->author << endl;61 }62 63 cout << endl;64 65 Date_Index& date_idx = con.get<1>();66 for (auto iter = date_idx.begin(); iter != date_idx.end(); iter++)67 {68 cout << iter->id << " "69 << iter->date << " "70 << iter->name << " "71 << iter->author << endl;72 }73 74 cout << endl;75 76 Name_Index& name_idx = con.get<2>();77 for (auto iter = name_idx.begin(); iter != name_idx.end(); iter++)78 {79 cout << iter->id << " "80 << iter->date << " "81 << iter->name << " "82 << iter->author << endl;83 }84 85 cout << endl;86 87 Author_Index& author_idx = con.get<3>();88 for (auto iter = author_idx.begin(); iter != author_idx.end(); iter++)89 {90 cout << iter->id << " "91 << iter->date << " "92 << iter->name << " "93 << iter->author << endl;94 }95 96 getchar();97 return 0;98 }

输出:

 

可以看到以int型为索引的,输出是按照从小到大来排序的。以string为索引的,是按照字母顺序来输出的。

 

转载于:https://www.cnblogs.com/tyche116/p/9205362.html

你可能感兴趣的文章
幸运大抽奖
查看>>
Post请求
查看>>
Java排序算法(三):直接插入排序
查看>>
一名女程序员对iOS的想法
查看>>
208亿背后的“秘密”
查看>>
全栈必备 敏捷估点
查看>>
作为一名合格的JAVA架构师需要点亮哪些技能树?
查看>>
Kubernetes 在知乎上的应用
查看>>
【死磕 Spring】----- IOC 之解析 bean 标签:BeanDefinition
查看>>
基于Token认证的WebSocket连接
查看>>
【Solidity】2.合约的结构体 - 深入理解Solidity
查看>>
【IOS-COCOS2D-X 游戏开发之二】【必看篇】总结阐述COCOS2D-X与COCOS2D-IPHONE区别;
查看>>
前端面试回忆录 - 滴滴篇 - 凉面
查看>>
jxl导入Excel 切割List 并使用MyBatis批量插入数据库
查看>>
小程序开发总结
查看>>
管理ORACLE实例
查看>>
JavaScript 闭包
查看>>
java获取当前时间前一周、前一月、前一年的时间
查看>>
话说WEB开发之页面重绘和回流
查看>>
using标识使用
查看>>