请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
最全的c++map的用法此文是复制来的0.0 1. map最基本的构造函数;6 k- ^( V# d% m" } @" p# l- C
map<string ,int>mapstring; map<int,string >mapint; ]& X" o E4 k$ C4 B/ v( ~1 k
map<sring,char>mapstring; map< char ,string>mapchar;* l+ U1 H$ z: E$ I: {7 b
map<char,int>mapchar; map<int ,char>mapint; 2. map添加数据; map<int ,string>maplive;1 k( Q& ?- `5 R" ~* A
1. maplive.insert(pair<int,string>(102,"aclive"));
0 Q9 ^( h l5 D1 ]; Z! v' P+ E2. maplive.insert(map<int,string>::value_type(321,"hai"));
9 q& d+ f( w# U$ p: ]3. maplive[112]="April";//map中最简单最常用的插入添加!' Z& ]3 ~ q, {" g/ I- {$ ^4 C
3. map中元素的查找: find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。 map<int ,string >::iteratorl_it;;
1 i1 P4 y7 X! O9 s0 b. ml_it=maplive.find(112);//返回的是一个指针' w, `4 ~$ }# e4 I, o+ R) o$ H
if(l_it==maplive.end())
6 p- J2 P. c! v9 k2 |7 D9 _cout<<"we do not find112"<<endl;) C+ ^: k) O8 y5 P* A. K
elsecout<<"wo find112"<<endl;! t5 Z$ H* M5 q+ ?4 [2 W0 M" }# Z0 E
% X! Q; i* @: d9 m* Q) _* }
map<string,string>m; if(m[112]=="") cout<<"we do not find112"<<endl;% a0 a# c6 p4 H: {# A- J
4. map中元素的删除:2 N8 F, [4 G( T: B) o
如果删除112;
! R/ B2 f) P( P; ~map<int ,string>::iterator l_it;;
) |8 x6 t) s3 g' W& F) F2 dl_it =maplive.find(112);: Y$ _' ?9 n& r( u3 Z: H$ H& @6 w
if( l_it == maplive.end())! r3 z( ?% ^9 z, m# v) b
cout<<"we do not find112"<<endl;7 Q3 E& \7 y) s# K' ]" w
else maplive.erase(l_it);//delete 112;# o0 O" K3 _, E/ x4 F
5. map中 swap的用法:: M& ?! O2 G" D8 ?0 \) s
Map中的swap不是一个容器中的元素交换,而是两个容器交换;6 s6 D4 E$ @4 Q8 @
For example:
7 F1 x' c4 |6 A5 w! Y6 K#include<map>
9 a6 `2 a; U: i/ m! v: i7 f% ~8 J#include<iostream> usingnamespace std; int main()3 C+ d# Z6 K9 f* X9 I' {: x
{
) i, b7 D9 |7 z6 n8 ?map <int, int> m1, m2, m3;
8 z( E9 B. L+ x0 j5 @5 @map <int,int>::iterator m1_Iter; m1.insert( pair <int, int>(1, 10 ) );
8 m# a7 L7 C- W# Q3 g) h3 m5 O, N8 jm1.insert ( pair <int,int> ( 2, 20 ) );) y9 k) O; w: l" b2 y4 M7 y
m1.insert ( pair <int,int> ( 3, 30 ) );' J; j, [) J9 |
m2.insert ( pair <int,int> ( 10, 100 ) );) l! _, U5 o# D' G: }' _
m2.insert ( pair <int,int> ( 20, 200 ) );( n/ |5 |: ^/ p. i5 [/ ~
m3.insert ( pair <int,int> ( 30, 300 ) ); cout << "The original map m1is:";
: U* ^( _" |" q, z8 j" Ifor ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )7 H1 b* h( c8 z6 ^
cout << " "<<m1_Iter->second;
& C. r& S9 W9 @' {% I, O" Q% Scout << "."<< endl; // This isthe member function version of swap* m+ B1 }, M$ p. b9 `5 }4 A( @" z! c1 H
// m2 is said to be theargument map; m1 the target map: B7 x) x3 W! Z6 O1 P# r
m1.swap( m2); cout << "Afterswapping with m2, map m1 is:";: F" l2 S* n6 }4 I: D @% D
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )
( R( |9 K4 I: \$ S$ a; t5 ~ Vcout << " "<< m1_Iter ->second;. Y( C: w4 i z/ \3 M3 _
cout << "."<< endl;
+ h: i4 k; ]: z' a. ]. v, M/ }2 R7 {cout << "After swapping with m2, mapm2 is:";
! f3 w9 X* N( hfor ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )
1 `. K5 n' ^( h2 t/ Pcout << " "<< m1_Iter ->second;* z" _0 U; ~, T* \8 [6 M; X
cout << "."<< endl;
, o, v( }: P7 r, B. V
// This is the specialized template version of swap
; u0 Z5 `; c* f, l' P/ i1 Iswap( m1, m3 ); cout << "Afterswapping with m3, map m1 is:";: E$ a6 U$ ~, L ~
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )
$ Z3 }, u/ R0 i3 ycout << " "<< m1_Iter ->second;
0 a+ b2 Y$ Z# D4 @& y2 bcout << "."<< endl;0 D8 f" @8 E S* B
} 6. map的sort问题:
6 ~" F3 p8 O% ^6 PMap中的元素是自动按key升序排序,所以不能对map用sort函数:3 i' J0 R$ Z1 x5 X
For example:
' h+ B& w: z3 d* }/ B( S; u#include<map>
+ |0 z* F. [, O8 i#include<iostream> usingnamespace std; int main( )4 A& L* ^8 M5 t1 n
{
% U' k; a; _! M6 @) P. |2 p- tmap<int, int> m1;
/ n, S$ T6 u; f5 e5 h9 K2 \# ]2 pmap <int,int>::iterator m1_Iter; m1.insert (pair <int, int> (1, 20 ) );
- Z0 n" e n2 R5 M) i, _m1.insert ( pair<int, int> ( 4, 40) );
6 {- g6 Q: x! T5 om1.insert ( pair<int, int> ( 3, 60) );: Q! }, M( j' k$ p
m1.insert ( pair<int, int> ( 2, 50) );+ z3 W$ n: C: w. j
m1.insert ( pair<int, int> ( 6, 40) );
, C% Q5 i7 K- R/ C. }m1.insert ( pair<int, int> ( 7, 30) ); cout<< "The original map m1is:"<<endl;7 H1 W# @ m; j" h
for ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ )) f3 Y: E& i3 C! m4 t3 Y& R
cout << m1_Iter->first<<""<<m1_Iter->second<<endl;
9 @/ Z; \+ m7 q' y, f" e, X+ T( l! N0 V
}
4 y- C2 r/ h7 b0 M1 A The original map m1 is:0 }) V+ m' t) i3 I
1 202 Y0 A6 S) l' G+ U5 M
2 50# D8 G3 w1 t: y
3 60" e) u9 a/ d. e3 E: m B" B; j
4 40" B/ s" j* V, l9 d3 H
6 40
8 N' I P! R- l5 _, v9 ]7 30 7. map的基本操作函数:
; o2 F- o- x+ y+ ]. ]C++Maps 是一种关联式容器,包含“关键字/值”对
% a0 j! }, }! A3 Lbegin() 返回指向map头部的迭代器
0 Y7 H: \9 u8 m/ f/ y6 Wclear() 删除所有元素; t6 l5 A+ d$ a/ u: y4 @" k9 r
count() 返回指定元素出现的次数. I; T4 G$ H1 [5 d* A' m* A* z
empty() 如果map为空则返回true' g8 \ L0 M) N
end() 返回指向map末尾的迭代器! F: ]. y& g* i. T
equal_range() 返回特殊条目的迭代器对
+ A4 U- q# i, k* m8 b" }) i- H) cerase() 删除一个元素 `$ y4 t, Y1 l5 s/ n& y% ]5 V; k( S
find() 查找一个元素( M0 Y) S# c" S, m5 t, ?* g
get_allocator() 返回map的配置器* A1 Q" l6 u K
insert() 插入元素
7 f; D# t2 j7 N; L+ w5 l3 akey_comp() 返回比较元素key的函数
, _% @7 ~/ i _' C& `3 q% v- Ulower_bound() 返回键值>=给定元素的第一个位置
9 w, `( |9 K. _7 D) a0 Cmax_size() 返回可以容纳的最大元素个数/ R) p! D m: W5 U0 j0 L! Z
rbegin() 返回一个指向map尾部的逆向迭代器/ t) N& R9 F2 A! l: a- ]
rend() 返回一个指向map头部的逆向迭代器
$ T* z/ ^) d: B2 `3 }size() 返回map中元素的个数
. Q& B" s6 s( m" C aswap() 交换两个map# K& u/ g+ A+ c) |) k5 l( ]
upper_bound() 返回键值>给定元素的第一个位置/ g0 Z) t! S6 U# R8 d
value_comp() 返回比较元素value的函数 # d T' ?) s8 K* ?
|