C++ STL一一map存储小实例

map存储在xml文件中的体现是非常方便的,如下简单的xml文件实例结构

/*
<Params>
    <Name>xuanyin235</Name>
    <Age>24</Age>
    <Sex>male</Sex>
</Params>
*/
/*
<SubItems>
    <Item1 Name="xuanyin235" Age="24" Sex="male" />
    <Item2 Name="kitty" Age="18" Sex="female" />
    <Item3 Name="Kimi" Age="13" Sex="male" />
</SubItems>
*/
代码存储实例如下:

//vector_map.h
#include <vector>
#include <map>
#include <iostream>
#include <string>

using namespace std;

typedef struct
{
	vector<string> v_param;
	map<string,string> m_param;
}_V_1MAP_PARAM,*_pV_1MAP_PARAM;

typedef struct{
	vector<string> v_param;
	map<string,_V_1MAP_PARAM> m_param;
}_V_2MAP_PARAM,_pV_2MAP_PARAM;

typedef struct  
{
	_V_1MAP_PARAM m_v_1map_param;
	_V_2MAP_PARAM m_v_2map_param;
}_DEF_PARAM;

void InitParams();
void InitSubItems();

//vector_map.cpp
#include "vector_map.h"

_DEF_PARAM def_param;

void main()
{
	InitParams();
	cout<<"***************InitParams**************"<<endl;
	for (int iParamIndex=0;iParamIndex<def_param.m_v_1map_param.m_param.size();iParamIndex++)
	{
		cout<<def_param.m_v_1map_param.v_param[iParamIndex]<<" "
			<<def_param.m_v_1map_param.m_param[def_param.m_v_1map_param.v_param[iParamIndex]]<<endl;
	}

	InitSubItems();
	cout<<"***************InitSubItems**************"<<endl;
	for (int iSubItems=0;iSubItems<def_param.m_v_2map_param.m_param.size();iSubItems++)
	{
		cout<<def_param.m_v_2map_param.v_param[iSubItems]<<" ";
		_V_1MAP_PARAM v_1map_param;
		v_1map_param = def_param.m_v_2map_param.m_param[def_param.m_v_2map_param.v_param[iSubItems]];
		map<string,string>::iterator it = v_1map_param.m_param.begin();
		for (int index=0;index<v_1map_param.m_param.size();index++)
		{
			cout<<v_1map_param.v_param[index]<<" "<<v_1map_param.m_param[v_1map_param.v_param[index]]<<" ";
		}
		cout<<endl;
	}
}

void InitParams()
{
	_V_1MAP_PARAM v_1map_param;
	v_1map_param.m_param.insert(make_pair("Name","xuanyin235"));
	v_1map_param.m_param.insert(make_pair("Age","24"));
	v_1map_param.m_param.insert(make_pair("Sex","male"));

	map<string,string>::iterator it = v_1map_param.m_param.begin();
	for (int iParamIndex=0; iParamIndex<v_1map_param.m_param.size();iParamIndex++)
	{
		v_1map_param.v_param.push_back(it->first);
		it++;
	}
	def_param.m_v_1map_param = v_1map_param;
}

void InitSubItems()
{
	_V_1MAP_PARAM v_1map_param1;
	_V_2MAP_PARAM v_2map_param;
	v_1map_param1.m_param.insert(make_pair("Name","xuanyin235"));
	v_1map_param1.m_param.insert(make_pair("Age","24"));
	v_1map_param1.m_param.insert(make_pair("Sex","male"));
	map<string,string>::iterator it1=v_1map_param1.m_param.begin();
	for (int i=0;i<v_1map_param1.m_param.size();i++)
	{
		v_1map_param1.v_param.push_back(it1->first);
		it1++;
	}

	v_2map_param.m_param.insert(make_pair("Item1",v_1map_param1));

	_V_1MAP_PARAM v_1map_param2;
	v_1map_param2.m_param.insert(make_pair("Name","kitty"));
	v_1map_param2.m_param.insert(make_pair("Age","18"));
	v_1map_param2.m_param.insert(make_pair("Sex","female"));
	map<string,string>::iterator it2=v_1map_param2.m_param.begin();
	for (int i=0;i<v_1map_param2.m_param.size();i++)
	{
		v_1map_param2.v_param.push_back(it2->first);
		it2++;
	}

	v_2map_param.m_param.insert(make_pair("Item2",v_1map_param2));

	_V_1MAP_PARAM v_1map_param3;
	v_1map_param3.m_param.insert(make_pair("Name","Kimi"));
	v_1map_param3.m_param.insert(make_pair("Age","13"));
	v_1map_param3.m_param.insert(make_pair("Sex","male"));
	map<string,string>::iterator it3=v_1map_param3.m_param.begin();
	for (int i=0;i<v_1map_param3.m_param.size();i++)
	{
		v_1map_param3.v_param.push_back(it3->first);
		it3++;
	}

	v_2map_param.m_param.insert(make_pair("Item3",v_1map_param3));
	map<string,_V_1MAP_PARAM>::iterator it = v_2map_param.m_param.begin();
	for (int i=0;i<v_2map_param.m_param.size();i++)
	{
		v_2map_param.v_param.push_back(it->first);
		it++;
	}
	def_param.m_v_2map_param = v_2map_param;
}
运行结果:

***************InitParams**************
Age 24
Name xuanyin235
Sex male
***************InitSubItems**************
Item1 Age 24 Name xuanyin235 Sex male
Item2 Age 18 Name kitty Sex female
Item3 Age 13 Name Kimi Sex male
请按任意键继续. . .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值