请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
最全的c++map的用法此文是复制来的0.0 1. map最基本的构造函数;$ F, B3 H7 J7 O$ l2 h/ X6 z
map<string ,int>mapstring; map<int,string >mapint;
" @7 Z2 Z3 U6 `) w' y, M* wmap<sring,char>mapstring; map< char ,string>mapchar;
( l* j- R# f( Jmap<char,int>mapchar; map<int ,char>mapint; 2. map添加数据; map<int ,string>maplive;, i+ |* ~+ _8 M4 b( v4 L( c* g9 M
1. maplive.insert(pair<int,string>(102,"aclive"));5 B1 j/ Z9 ]6 a% |* Y
2. maplive.insert(map<int,string>::value_type(321,"hai"));: e6 I4 e! D& V" d
3. maplive[112]="April";//map中最简单最常用的插入添加!7 b7 W7 p+ k' N C1 d% I7 P" P4 J
3. map中元素的查找: find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。 map<int ,string >::iteratorl_it;; & `( [1 K y' g
l_it=maplive.find(112);//返回的是一个指针
0 ^: h7 [0 O* V: e3 Y6 ]if(l_it==maplive.end())4 O0 S( y3 b' u
cout<<"we do not find112"<<endl;
9 B n9 S2 p; v9 [5 s( Selsecout<<"wo find112"<<endl;
" k" Q, C1 U% \1 E ) F. {9 S) \, y8 r7 o( W& m- O
map<string,string>m; if(m[112]=="") cout<<"we do not find112"<<endl;
$ d, U+ Z" a# p) R6 G# E 4. map中元素的删除:0 Q5 I0 ^3 t( N$ e& q, k3 Z8 J* \+ \
如果删除112;
3 [8 e9 k5 a! P$ e2 ^4 ~map<int ,string>::iterator l_it;;3 {6 j) w0 j! |( P3 P. \7 y
l_it =maplive.find(112);
+ v6 U* _ H% w- G! Vif( l_it == maplive.end())
: @) i D! e. v2 G' N+ rcout<<"we do not find112"<<endl;9 ]2 Q) u3 ^) W+ x4 g5 w
else maplive.erase(l_it);//delete 112;) f) }8 g8 p1 X- z% u: o
5. map中 swap的用法:
- D& F2 O' {' [3 g# m% nMap中的swap不是一个容器中的元素交换,而是两个容器交换;
8 _0 H7 D. O! G# o6 R7 ~& GFor example:/ e3 T8 C* r0 f- w: J2 `9 F; Q
#include<map>) d- R* U: M1 d; f, L0 [+ b) y9 M: E
#include<iostream> usingnamespace std; int main()
i( _; o5 A' h2 L! C{) _9 l# Z# y7 y' y2 N
map <int, int> m1, m2, m3;9 E( W1 Z* p6 n$ {% O/ {" N& X, ~
map <int,int>::iterator m1_Iter; m1.insert( pair <int, int>(1, 10 ) );8 q) R3 m0 Z8 z& n( a8 H' w
m1.insert ( pair <int,int> ( 2, 20 ) );1 |/ y# M7 B# E% n/ `' f8 j( i
m1.insert ( pair <int,int> ( 3, 30 ) );
) b1 F) a9 M- `1 k/ sm2.insert ( pair <int,int> ( 10, 100 ) );' l5 E3 C( F( O4 ^! D9 v9 d: M1 b
m2.insert ( pair <int,int> ( 20, 200 ) );8 C# K+ y3 n! E \
m3.insert ( pair <int,int> ( 30, 300 ) ); cout << "The original map m1is:";
W' K9 O H3 F# J; Wfor ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )
# N' [' p+ q( Acout << " "<<m1_Iter->second;6 d+ h5 o% w% Q' ], r
cout << "."<< endl; // This isthe member function version of swap
6 r2 l0 {! c( X+ m9 _// m2 is said to be theargument map; m1 the target map
" t# c8 O0 l {2 U1 n: z( t8 bm1.swap( m2); cout << "Afterswapping with m2, map m1 is:";8 X. y" N6 {" E
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )1 o. a+ [ N+ ^3 V8 p* {1 o) f
cout << " "<< m1_Iter ->second;
Z; p; @# j0 h; E) b7 ~4 hcout << "."<< endl; 7 e7 k |! \( b: m2 {! E) B
cout << "After swapping with m2, mapm2 is:";
( Y6 J6 v" V9 Vfor ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )5 z; B6 C% H4 F' E6 b r
cout << " "<< m1_Iter ->second;! ?5 T! p$ m- B- w
cout << "."<< endl;
7 _/ g; z8 v. A. ?. J J// This is the specialized template version of swap
0 V, D# _. U2 Y( l( W6 Nswap( m1, m3 );
cout << "Afterswapping with m3, map m1 is:";
0 y1 g1 W5 g* u. s& Jfor ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )# s: N% w2 i7 C# J1 k
cout << " "<< m1_Iter ->second;" C( `; R1 A9 D8 g+ r) g
cout << "."<< endl;
4 u; S& m4 D3 o7 v/ I} 6. map的sort问题:
# ~' N8 ]" F3 r7 D. QMap中的元素是自动按key升序排序,所以不能对map用sort函数:
3 S. s7 D* y2 g$ |For example:& d' \0 J0 T* w- S
#include<map>
8 \! q% a0 N: H7 P* L#include<iostream> usingnamespace std; int main( )
/ S9 J: G* G2 m7 ^6 z' @, G3 v{
3 e6 W8 K& [. Y; u% tmap<int, int> m1;
3 X" I9 g- m; t0 t1 amap <int,int>::iterator m1_Iter; m1.insert (pair <int, int> (1, 20 ) );0 a/ i7 b# J: T. T
m1.insert ( pair<int, int> ( 4, 40) );2 a7 Q, l: c# H" Y3 |$ v' `6 M- k
m1.insert ( pair<int, int> ( 3, 60) );
" W9 b v! I) z% N3 ]% @+ E) h Sm1.insert ( pair<int, int> ( 2, 50) );
) U& z& y; j# W6 i8 v0 m# `" Dm1.insert ( pair<int, int> ( 6, 40) );
( _6 R( ]! {+ H, q e( {m1.insert ( pair<int, int> ( 7, 30) ); cout<< "The original map m1is:"<<endl;
+ ^- f* B: O7 _5 J: Efor ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ )
; z8 D( |1 d! ^9 acout << m1_Iter->first<<""<<m1_Iter->second<<endl;
8 S+ [; d6 O4 q: _( U
' x1 v8 H6 o/ a* T* K* L9 r, y}; @9 i/ C/ ]: M; x! x( o* n8 d
The original map m1 is:
- a% Z4 r) s, b* j" N2 R3 M1 20# X# e4 S& P; D+ m4 c
2 50
( a d9 W- ] d: o' K7 E6 c+ p3 60
4 n: _# e* S; M4 40
3 b( A) |/ Q+ }$ F, H) @7 a6 40
6 F8 c/ e" j* E- C' c0 e7 30 7. map的基本操作函数:7 {' P% ?$ }' _& x
C++Maps 是一种关联式容器,包含“关键字/值”对( }- p* \( }2 x
begin() 返回指向map头部的迭代器* X$ ?2 i' R3 z
clear() 删除所有元素- a: e, d( \1 w; Z# X( m+ s5 g% R
count() 返回指定元素出现的次数
4 x4 C: b* G( K1 G0 y: Xempty() 如果map为空则返回true" Q0 r( \9 n$ b8 W n+ X
end() 返回指向map末尾的迭代器
; |5 q! A/ P+ u& ]+ u0 M2 \equal_range() 返回特殊条目的迭代器对4 q7 |" }9 v6 @' {: N
erase() 删除一个元素
7 n8 ?8 r5 `1 o; A$ q8 E& p& Y3 h3 [find() 查找一个元素
- |3 A/ e {0 g( a4 Kget_allocator() 返回map的配置器
4 D* k7 i0 Y C R8 _insert() 插入元素. g/ G( d/ i' }) g3 \
key_comp() 返回比较元素key的函数6 M4 u- m5 R/ i" P' _0 ? l+ ?2 N
lower_bound() 返回键值>=给定元素的第一个位置
% I" Q) k" J; u' \+ n, imax_size() 返回可以容纳的最大元素个数
3 R# P2 d1 j9 A P6 B! x* `3 urbegin() 返回一个指向map尾部的逆向迭代器" r9 [5 F Y* Y2 \2 v
rend() 返回一个指向map头部的逆向迭代器
" g4 r3 Q: o4 V8 J! l( bsize() 返回map中元素的个数$ U- k2 h3 C$ N ^
swap() 交换两个map2 h* A+ Z# M. h, p
upper_bound() 返回键值>给定元素的第一个位置
# ^/ k3 r; { cvalue_comp() 返回比较元素value的函数
+ x9 v9 {, }/ e9 m' h) } |