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
请按任意键继续. . .