#include
"stdafx.h"
#include
<
string
>
#include
<
iostream
>
#include
<
map
>
#include
<
list
>
using namespace std;
#if
defined (_MSC_VER)
#pragma
warning(disable: 4786)
#endif
struct Node
{
int m_id;
string
m_str
;
bool
operator<(Node const&
_A
) const
{
//
排序策略
,
首先按
m_id
排序
,m_id
相等则按
m_str
排序
return m_id <
_A
.m_id ? true:(m_id>
_A
.m_id ? false :
m_str
.
compare
(
_A
.
m_str
)<0);
}
Node(int
id
,
string
str
)
{
m_id=
id
;
m_str
=
str
;
}
Node(){}
};
int main(int argc, char* argv[])
{
map
<int,Node> mapNode,mapNode2;
typedef pair<int,Node> Painr1;
mapNode.
insert
(Painr1(1,Node(1,
"str1"
)));
mapNode2.
insert
(Painr1(1,Node(1,
"str2"
)));
map
< int,
map
<int,Node>* >mapList;
typedef pair< int,
map
<int,Node> *> Painr2;
mapList.
insert
(Painr2(1,&mapNode));
mapList.
insert
(Painr2(2,&mapNode2));
map
< int,
map
<int,Node>* >::
iterator
itemFirst;
map
< int, Node>* pNode=
NULL
;
//
应该为指针不是迭代器
map
< int, Node>::
iterator
itemSecond;
for(itemFirst=mapList.
begin
();itemFirst!=mapList.
end
();++itemFirst)
//
第一层
{
pNode=itemFirst->
second
;
for (itemSecond=pNode->
begin
();itemSecond!=pNode->
end
();++itemSecond)
//
第二层
{
cout
<<itemSecond->
first
<<
endl
;
cout
<<itemSecond->
second
.
m_str
<<
endl
;
}
}
return 0;
}