多索引容器multi_index_container

本文介绍了一个使用C++ Boost库中的MultiIndexContainer来实现具有多种索引方式的容器示例。该示例创建了一个能根据ID、姓名及昵称进行查找的雇员信息容器。

#include "stdafx.h"
#include <iostream>
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/member.hpp>
#include <boost/multi_index/ordered_index.hpp>

using namespace boost;
using namespace boost::multi_index;
using namespace std;

class CShuihuBawcock
{
public:
	CShuihuBawcock(int id_, std::string name_, std::string nickename) 
		:m_id(id_)
		,m_name(name_)
		, m_nickname(nickename)
	{

	}
public:
	int m_id;
	string m_name;
	string m_nickname;
};

typedef multi_index_container <
	CShuihuBawcock,
	indexed_by<
	ordered_unique<member<CShuihuBawcock, int, &CShuihuBawcock::m_id> >,
	ordered_non_unique<member<CShuihuBawcock, string, &CShuihuBawcock::m_name> >,
	ordered_non_unique<member<CShuihuBawcock, string, &CShuihuBawcock::m_nickname> >
	>
> EmployeeContainer;

int _tmain(int argc, _TCHAR* argv[])
{
	EmployeeContainer con;
	con.insert(CShuihuBawcock(0, "宋江", "天魁星"));
	con.insert(CShuihuBawcock(1, "吴用", "天机星"));
	con.insert(CShuihuBawcock(2, "卢俊义", "天罡星"));

	typedef EmployeeContainer::nth_index<0>::type IdIndex;

	IdIndex::iterator it = con.get<0>().find(5);
	if (it != con.get<0>().end())
	{
		cout << it->m_name << endl;
	}
	getchar();
	return 0;
}

先不多说 贴一段小代码 有时间再整理下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值