1.一个关键字
struct Node
{
bool m_bIs;
string m_str;
Node(bool b,string str)
{
m_bIs=b;
m_str=str;
}
};
int main(int argc, char* argv[])
{
map <long,Node> mapTest1;//long为key
typedef pair<int,Node> Painr1;
mapTest1.insert(Painr1(2,Node(true,"str2")));
mapTest1.insert(Painr1(3,Node(false,"str3")));
mapTest1.insert(Painr1(1,Node(true,"str1")));
mapTest1.insert(Painr1(2,Node(true,"str222")));//插入失败
map<long,Node>::iterator item;
for (item=mapTest1.begin();item!=mapTest1.end();++item)
{
cout<<item->second.m_str<<endl;
}
}
输出
str1
str2
str3
2.多个关键字
#include
"stdafx.h"
#include
<
string
>
#include
<
iostream
>
#include
<
map
>
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
<Node,int>map2;
//Node is key
typedef pair<Node,int> Painr2;
Node node;
node.m_id=2;
node.
m_str
=
"str2_2"
;
map2.
insert
(Painr2(node,2));
node.m_id=2;
node.
m_str
=
"str2_1"
;
map2.
insert
(Painr2(node,3));
map2.
insert
(Painr2(Node(1,
"str1"
),1));
map
<Node,int>::
iterator
item
;
for (
item
=map2.
begin
();
item
!=map2.
end
();++
item
)
{
cout
<<
item
->
first
.m_id<<
"#"
<<
item
->
first
.
m_str
<<
endl
;
}
return 0;
}
输出
1#str1
2#str2_1
2#str2_2