请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
最全的c++map的用法此文是复制来的0.0 1. map最基本的构造函数;/ v7 _8 S4 _2 B( Z6 y
map<string ,int>mapstring; map<int,string >mapint;$ E& x* s1 e$ s7 D. ~! \
map<sring,char>mapstring; map< char ,string>mapchar;' T% O, J9 m G6 B [; L# [! K+ i
map<char,int>mapchar; map<int ,char>mapint; 2. map添加数据; map<int ,string>maplive;
$ A9 F. i# p u5 [4 c6 u! M1. maplive.insert(pair<int,string>(102,"aclive"));3 t. j1 D" H/ C f
2. maplive.insert(map<int,string>::value_type(321,"hai"));; ]$ o( ~5 Y M' t
3. maplive[112]="April";//map中最简单最常用的插入添加!3 a6 U, T2 q2 A6 q# e9 D
3. map中元素的查找: find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。 map<int ,string >::iteratorl_it;;
& j/ n6 H% k' p& N% `l_it=maplive.find(112);//返回的是一个指针% z; q2 q2 w& ~: d
if(l_it==maplive.end())
, A, k6 U# U4 N8 L7 Mcout<<"we do not find112"<<endl;8 K6 l1 d. q8 N$ h3 z2 G
elsecout<<"wo find112"<<endl;
$ d |" }. t7 K: m 8 ]3 p( q4 z- G. _% ?+ C: {
map<string,string>m; if(m[112]=="") cout<<"we do not find112"<<endl;2 w l: b2 h0 w; A; ^
4. map中元素的删除:5 i7 ?3 H" S' v: x L/ a0 x( X
如果删除112;& Q3 o" C! Q3 G- I
map<int ,string>::iterator l_it;;& j5 i/ t; }7 l7 V6 l
l_it =maplive.find(112);
& n3 R5 {2 {5 T& ]; jif( l_it == maplive.end())
' Y4 `8 f. C( n' D8 s7 C H1 q4 v4 z% ^cout<<"we do not find112"<<endl;
1 Z+ `2 q! [* p4 f7 l( |8 F% \$ relse maplive.erase(l_it);//delete 112;
! S- r( u$ D8 ^ 5. map中 swap的用法:
, i% Y+ O! T. ]- V2 o9 I. D/ q/ PMap中的swap不是一个容器中的元素交换,而是两个容器交换;8 ?! ], C0 |, ]2 T# W
For example:
& m: C! F9 S1 \, p#include<map>
. c6 `; h8 r1 p% c#include<iostream> usingnamespace std; int main()
7 Q' i% p [; S; n! P" ~2 H. `{
: X6 ^ u) A& P" K) p/ J: ]map <int, int> m1, m2, m3;
) _: D0 |8 ?) s0 C1 imap <int,int>::iterator m1_Iter; m1.insert( pair <int, int>(1, 10 ) );
+ g5 @( ~; }7 r2 u% W' v: r; Km1.insert ( pair <int,int> ( 2, 20 ) );
; A! o; [2 u7 z7 o1 z% w1 g$ Km1.insert ( pair <int,int> ( 3, 30 ) );
( ~* p3 ~9 c' H# V! o, |m2.insert ( pair <int,int> ( 10, 100 ) );7 T" \# @# O; O/ R: ]
m2.insert ( pair <int,int> ( 20, 200 ) );
; `/ B$ b, _! B) bm3.insert ( pair <int,int> ( 30, 300 ) ); cout << "The original map m1is:";) ~0 o8 j9 P% p, R; e
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )9 j; U2 J1 {( W* X" {4 Z: f
cout << " "<<m1_Iter->second;
; o2 |- O) P" R' l/ Hcout << "."<< endl; // This isthe member function version of swap' g8 C5 p; C6 y# Q" d
// m2 is said to be theargument map; m1 the target map
. ~1 s8 Z, o' o6 P3 [+ {m1.swap( m2); cout << "Afterswapping with m2, map m1 is:";
" m6 ^2 a, M# W( I6 Mfor ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ ) H- y6 L$ W. @; T7 R0 ~
cout << " "<< m1_Iter ->second;
" W* t! U9 a9 Gcout << "."<< endl; . n! y `1 x1 \8 P
cout << "After swapping with m2, mapm2 is:";; z K! W( g; a- z
for ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )
& m! \! d& h1 M" x+ K+ `! }cout << " "<< m1_Iter ->second;
! Z, W) D% W* j; W, G4 j9 ycout << "."<< endl;
7 ^; _- o! {; S9 B9 X' H: N% F// This is the specialized template version of swap
& n" h5 T. U+ J9 uswap( m1, m3 );
cout << "Afterswapping with m3, map m1 is:";
( `; b& U* o" vfor ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )9 s& N. B1 v$ j" d1 H4 f
cout << " "<< m1_Iter ->second;7 R2 L6 c# J( w
cout << "."<< endl;" `/ D) p% H- e
} 6. map的sort问题:3 n0 P, n; N6 k
Map中的元素是自动按key升序排序,所以不能对map用sort函数:
4 t/ [. x% j. [9 N+ |For example:( R4 d5 w m# m: M, R
#include<map>
% l: |5 d9 _1 F3 R% c' R#include<iostream> usingnamespace std; int main( )' u7 v9 C% ^: C6 w/ Y3 C" n
{/ z' C8 C8 I( Y7 |, J
map<int, int> m1;
2 ]* B: m3 M! l( h6 }map <int,int>::iterator m1_Iter; m1.insert (pair <int, int> (1, 20 ) );2 J7 O+ E- C2 k7 ]- O, J$ v+ x
m1.insert ( pair<int, int> ( 4, 40) );
2 b' v5 X% n' y5 o! h2 c3 y2 [8 R# [m1.insert ( pair<int, int> ( 3, 60) );6 A/ t- u6 ?! w: [2 Y( O- ]
m1.insert ( pair<int, int> ( 2, 50) );9 y2 w0 [+ |7 D3 b/ o3 m
m1.insert ( pair<int, int> ( 6, 40) );% Q4 _6 t% k# j
m1.insert ( pair<int, int> ( 7, 30) ); cout<< "The original map m1is:"<<endl;
4 p6 X: N7 j# h; J6 Cfor ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ ); N: O7 W: W2 N: v0 G8 _4 [; H9 [
cout << m1_Iter->first<<""<<m1_Iter->second<<endl;
. g# I: X, ^, Z2 R( Q
' Y+ J( T' G1 E) z- j- [; G/ `: j6 }}
* W# P: R; g: R K% p8 W& z The original map m1 is:
2 ?3 `+ m- \( K. S1 20
: h0 \+ W+ d" ^; s. N2 50
1 ]7 E! J- q7 p7 M) L3 60% n- O9 c4 H( |
4 40* N! N% R% V" B3 D
6 40
# B3 F+ f9 q6 S8 y7 30 7. map的基本操作函数:
( u+ w: s% e3 r4 L' B5 y( ^C++Maps 是一种关联式容器,包含“关键字/值”对5 W* _7 q1 }8 Z3 \+ f" B
begin() 返回指向map头部的迭代器
2 ~/ T3 x* w3 F1 Sclear() 删除所有元素
7 W$ I( z( q" ^5 j3 z8 R# `7 C& Jcount() 返回指定元素出现的次数
@9 W8 U0 q' _+ H# I. }0 Rempty() 如果map为空则返回true
% l/ U* w# G& Dend() 返回指向map末尾的迭代器
! `) {0 Q4 q, W' j# Wequal_range() 返回特殊条目的迭代器对2 T+ {+ c* r- w% A3 [' Q
erase() 删除一个元素
, n1 U- T( @& V6 \" H. ofind() 查找一个元素
3 D6 O V; I! f: k4 Z/ }' I8 L0 z/ Xget_allocator() 返回map的配置器
1 d: W5 g& I3 n! T- F4 Uinsert() 插入元素
7 q( h1 Y( @+ S9 Jkey_comp() 返回比较元素key的函数( B0 e% }4 C& ]/ \# F8 w6 r
lower_bound() 返回键值>=给定元素的第一个位置
& H6 S2 g& O" i' N' Gmax_size() 返回可以容纳的最大元素个数6 e4 J, N" I' b, k z( D; R9 q
rbegin() 返回一个指向map尾部的逆向迭代器& J$ J& S' Y' T! r- S5 ~
rend() 返回一个指向map头部的逆向迭代器3 f. i. s3 |, B. e
size() 返回map中元素的个数- l* [. K5 E6 @% z. B
swap() 交换两个map
: ^3 y6 A: z! W! ^3 x6 L; \( uupper_bound() 返回键值>给定元素的第一个位置 O7 y; [, Q; Q9 v9 u4 m+ x; Q
value_comp() 返回比较元素value的函数 0 ~5 o' Q( b9 W
|