请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
最全的c++map的用法此文是复制来的0.0 1. map最基本的构造函数;
. K9 C) a4 M! Y% P$ X) Zmap<string ,int>mapstring; map<int,string >mapint;( x' v, k/ u/ H: _
map<sring,char>mapstring; map< char ,string>mapchar;
. A8 r0 b, t" }' D5 t) p# |map<char,int>mapchar; map<int ,char>mapint; 2. map添加数据; map<int ,string>maplive;
$ [4 V9 M: k: l* G1 m4 H/ h1. maplive.insert(pair<int,string>(102,"aclive"));# X, ^- Y: Q2 v6 S
2. maplive.insert(map<int,string>::value_type(321,"hai"));+ H! i; r# L. |* E! T: p: h/ J7 E5 a
3. maplive[112]="April";//map中最简单最常用的插入添加!
# o( o# B" h, \! J. {5 T4 Y6 Q* ~ 3. map中元素的查找: find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。 map<int ,string >::iteratorl_it;; ( t2 `& b$ Q7 o4 _6 ^/ X% i
l_it=maplive.find(112);//返回的是一个指针/ \ c- P1 a+ V9 m9 g$ e3 O: I
if(l_it==maplive.end())
7 H( b/ k3 a; |% A9 u' p! n6 Xcout<<"we do not find112"<<endl;& U( K7 E9 [' U2 ]
elsecout<<"wo find112"<<endl;
* {. ^& C6 a9 H9 @# P / S9 k5 G. I3 E6 y
map<string,string>m; if(m[112]=="") cout<<"we do not find112"<<endl;' _* i y# j! t
4. map中元素的删除:2 \. e1 F2 z! b0 A! ~; j
如果删除112;; S8 E; L; B& g- h3 |
map<int ,string>::iterator l_it;;( C+ O# @0 f: a0 L
l_it =maplive.find(112);: C6 G. K* Q9 m
if( l_it == maplive.end())& N+ x, [ l, R+ n% Y; `
cout<<"we do not find112"<<endl;
: U T( F5 N) i: |else maplive.erase(l_it);//delete 112;9 S! U$ @3 Z" H1 I3 z
5. map中 swap的用法:
! @. O; |" S" }1 {Map中的swap不是一个容器中的元素交换,而是两个容器交换;
1 h x) x v4 G( J4 MFor example:$ K& y( T$ g* C u8 l
#include<map>& B/ N4 `6 j$ i7 Q% f
#include<iostream> usingnamespace std; int main()
: }! g, w* B7 Z; j. o8 r) \. u{
7 ~" a. i+ V) qmap <int, int> m1, m2, m3;
+ N* }+ [8 J# {4 A, n! Nmap <int,int>::iterator m1_Iter; m1.insert( pair <int, int>(1, 10 ) );
8 E% {% h3 ~! qm1.insert ( pair <int,int> ( 2, 20 ) );
3 ~( N4 t% G2 B; cm1.insert ( pair <int,int> ( 3, 30 ) );
4 e. u2 l. d6 p! d+ a- o: R1 sm2.insert ( pair <int,int> ( 10, 100 ) );: A+ o" P2 o) h7 s% e( E
m2.insert ( pair <int,int> ( 20, 200 ) );2 X* A% j; s, ]8 C: m% O& L
m3.insert ( pair <int,int> ( 30, 300 ) ); cout << "The original map m1is:";% p3 `7 Y7 U8 n! O7 M1 _7 J
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )/ L- }" c, r) W
cout << " "<<m1_Iter->second;4 C8 [8 G! U ^4 z- M
cout << "."<< endl; // This isthe member function version of swap
0 C1 K( a7 k1 S1 C. i+ D* H/ V* j// m2 is said to be theargument map; m1 the target map
4 _6 W; ?2 {3 z0 L3 |, Nm1.swap( m2); cout << "Afterswapping with m2, map m1 is:";: ^$ R/ k0 i* U
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )7 ~( W5 I- Y$ z5 P' e
cout << " "<< m1_Iter ->second;/ Q5 q6 h6 M5 }) R
cout << "."<< endl;
[' z% y F9 p" K$ j) c, Xcout << "After swapping with m2, mapm2 is:";
& X( l. x& P' y9 ]. b1 \for ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )
- b5 R; p' B6 m6 s8 Xcout << " "<< m1_Iter ->second;
; R8 |3 m- ^; ~cout << "."<< endl;
7 u% ` W( D. @$ `6 D% @" D
// This is the specialized template version of swap
$ u$ {) C5 S& Y% kswap( m1, m3 ); cout << "Afterswapping with m3, map m1 is:";, X: l8 d5 U% l: x+ j
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )
& h) h+ Q- Z! N1 I) R- qcout << " "<< m1_Iter ->second;
. q6 x2 g1 Q4 n3 [) jcout << "."<< endl;, v: Q5 m l; r+ h8 j, U _2 K3 y+ e
} 6. map的sort问题:+ c4 c; {( e8 ]6 L
Map中的元素是自动按key升序排序,所以不能对map用sort函数:
* a4 ?, b, D) h }3 GFor example:
! w, M9 t5 `. a; L/ e# Y9 P' K#include<map>' `; l2 n7 d/ Y9 z
#include<iostream> usingnamespace std; int main( )/ X/ x4 X2 z6 [, i1 C9 a C
{
8 B2 i) Z5 B' u2 h: F3 j/ d$ qmap<int, int> m1;
8 H* G; {0 C; X Tmap <int,int>::iterator m1_Iter; m1.insert (pair <int, int> (1, 20 ) );
$ D) o- P% L" R9 ^! F5 q6 X* Pm1.insert ( pair<int, int> ( 4, 40) );3 \3 X0 ?! Y7 C. ~/ t
m1.insert ( pair<int, int> ( 3, 60) );! O2 M7 a' k8 Y: ?& s8 _
m1.insert ( pair<int, int> ( 2, 50) );$ ^+ L" Y8 | r0 b3 ?' |. |/ j
m1.insert ( pair<int, int> ( 6, 40) );, j( s$ d0 Z2 r; o
m1.insert ( pair<int, int> ( 7, 30) ); cout<< "The original map m1is:"<<endl;
7 F+ \. r, Z& b1 }0 }; C! V5 }for ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ ); P. {: c: H. D5 W
cout << m1_Iter->first<<""<<m1_Iter->second<<endl;
* u& ^$ k- i7 B
1 C& [( P& e& S$ p1 b v+ \1 H}8 K9 [; i$ |: D. W
The original map m1 is:. ^9 k6 ^$ T0 a2 T* m
1 20
; e9 ~3 D) ` Y& O2 50
; B" u6 d+ _; j: @! `3 60
( l% Z; S* ?# {+ N0 L4 40
1 E/ V h# x1 ^ T6 40! q, C8 i' K- d3 y& m
7 30 7. map的基本操作函数:* V8 T* }/ V: j
C++Maps 是一种关联式容器,包含“关键字/值”对7 V1 O' u" I z- I4 L
begin() 返回指向map头部的迭代器
! ^4 D. u. q8 X$ i$ F7 R5 H+ iclear() 删除所有元素
6 Z* A9 I' Z1 `- Rcount() 返回指定元素出现的次数
& i8 {: U5 p4 J3 oempty() 如果map为空则返回true% H+ t& w. x7 ^! N7 x
end() 返回指向map末尾的迭代器. r' J# z7 b. ?& ?
equal_range() 返回特殊条目的迭代器对 ~6 {$ S1 a. n& U' I
erase() 删除一个元素! w( K- k. C l. _0 q& A
find() 查找一个元素
, M& J! o) u7 s) t2 y" oget_allocator() 返回map的配置器
0 k) q) Y3 x" d1 s. H+ C8 Qinsert() 插入元素, R( b* q" l( z1 ?2 P0 [# q* C& w
key_comp() 返回比较元素key的函数
, A! l0 J) a8 A* H, Hlower_bound() 返回键值>=给定元素的第一个位置
8 ]7 N: h) y& B, a. Y$ J1 h! d& Y! umax_size() 返回可以容纳的最大元素个数3 x# X& m) H; ^! r1 w& d+ o. J2 D
rbegin() 返回一个指向map尾部的逆向迭代器
4 ]3 p5 P8 r. ]* S& @% J& P( h$ U4 \rend() 返回一个指向map头部的逆向迭代器
' a, L# j/ y" K+ [$ F( Esize() 返回map中元素的个数* u% Y# u; B, T1 N% }: u$ l
swap() 交换两个map5 V7 j/ z/ Z k" b% o
upper_bound() 返回键值>给定元素的第一个位置6 `7 }" N" O5 Z5 D. K6 H. U4 d
value_comp() 返回比较元素value的函数
$ i* F/ }0 b: O, c; C5 e" B |