请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
最全的c++map的用法此文是复制来的0.0 1. map最基本的构造函数;' u+ H; \- L5 z4 q! Y
map<string ,int>mapstring; map<int,string >mapint;/ f, O4 N5 y. S' w' ? d( V
map<sring,char>mapstring; map< char ,string>mapchar;7 H* b2 I Y- ?5 V
map<char,int>mapchar; map<int ,char>mapint; 2. map添加数据; map<int ,string>maplive;0 J5 M4 l6 T; c
1. maplive.insert(pair<int,string>(102,"aclive"));
% {# u- B& K2 y Y8 {- i( S% c2. maplive.insert(map<int,string>::value_type(321,"hai"));7 ~! v6 n3 o( s- x- z: c
3. maplive[112]="April";//map中最简单最常用的插入添加!
( A2 e1 r* H' ]" A/ Z' X 3. map中元素的查找: find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。 map<int ,string >::iteratorl_it;;
1 z+ ~( ]+ j" H. Nl_it=maplive.find(112);//返回的是一个指针
2 r/ V; o. p) Gif(l_it==maplive.end())
5 t) c6 _3 Z2 y( ?4 dcout<<"we do not find112"<<endl;7 Q5 ]+ n- k/ F8 X0 D' @/ Z3 ^3 e
elsecout<<"wo find112"<<endl;- O9 f9 O$ C3 X& Z
! N2 t4 z, k+ Z; ^' |$ f. x" s
map<string,string>m; if(m[112]=="") cout<<"we do not find112"<<endl;
! E7 o# D6 e; f5 ~8 e4 o9 X 4. map中元素的删除:
, N6 S/ j% E6 ~& p如果删除112;( Q) }7 `) @9 k3 a, a3 y3 m
map<int ,string>::iterator l_it;;2 Q! K8 `3 L0 x. d! C
l_it =maplive.find(112);
% @; I6 q; v3 k3 [: L( H7 `if( l_it == maplive.end())
1 g% r: L) `! G' p% W4 S4 Pcout<<"we do not find112"<<endl;
2 x+ u2 O. |! e0 _- q8 Felse maplive.erase(l_it);//delete 112;. H) t) d" T' p$ b( [
5. map中 swap的用法:
7 F: o) I% Q5 nMap中的swap不是一个容器中的元素交换,而是两个容器交换;- r7 R+ A5 F0 B
For example:; `1 m5 k3 V, H. R! n! A
#include<map> i: i# x" I* p! T+ E
#include<iostream> usingnamespace std; int main()
( Y+ p% [; }% I d# V: @/ l1 U{% z1 U7 g) |; o, T& A% N) y& k5 `
map <int, int> m1, m2, m3;! C. o; g) C9 |0 e7 ?8 B5 \
map <int,int>::iterator m1_Iter; m1.insert( pair <int, int>(1, 10 ) );
! X+ s+ `( X5 M- l% Wm1.insert ( pair <int,int> ( 2, 20 ) );
% j! K+ q, i. y) |2 N3 gm1.insert ( pair <int,int> ( 3, 30 ) );7 ]( [0 {4 s; d
m2.insert ( pair <int,int> ( 10, 100 ) );
7 z1 D3 F1 k, A9 P. lm2.insert ( pair <int,int> ( 20, 200 ) );4 \" @( q+ G6 }: A% H
m3.insert ( pair <int,int> ( 30, 300 ) ); cout << "The original map m1is:";, g* `# I& n$ l1 j6 j% X' S
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )7 `! W, ~* u0 \+ j4 U L3 T
cout << " "<<m1_Iter->second;% Y$ g" ^% _' V( J0 j' r
cout << "."<< endl; // This isthe member function version of swap5 Q$ S" @9 P6 f- N- d
// m2 is said to be theargument map; m1 the target map! k' @7 @* ]6 h3 V/ Y6 F" s/ Y- }* f
m1.swap( m2); cout << "Afterswapping with m2, map m1 is:";( M; _% i M5 F
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )
e! G- _' H# K# o1 k! A, Rcout << " "<< m1_Iter ->second;0 Q& {1 X1 t' d, N3 o3 t
cout << "."<< endl; - n3 a2 z& D, n# U( D! K! b0 h& R
cout << "After swapping with m2, mapm2 is:";5 B+ N: X( z" |
for ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )
: i1 ~+ P7 l3 h& b, c2 m- Hcout << " "<< m1_Iter ->second;
% g: j: k8 U; h( Icout << "."<< endl; 3 U' m2 N5 e% L) V" F, Q
// This is the specialized template version of swap% m/ M1 H- M5 l2 ?
swap( m1, m3 ); cout << "Afterswapping with m3, map m1 is:";' k8 [% i/ h# e% u' o
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )
1 f, a {0 }) z, {& F1 a* qcout << " "<< m1_Iter ->second;$ @1 e/ I6 C5 Q* H9 S; J
cout << "."<< endl;
9 C/ I3 H) N+ ]% b8 G/ ?} 6. map的sort问题:, I S; S7 }2 n9 ~( O
Map中的元素是自动按key升序排序,所以不能对map用sort函数:2 [3 m; U V7 M2 e' a6 d2 A
For example:- @6 a7 A% a1 ?; j4 e. t, I
#include<map>
* {. J) u0 ~, Q; I8 \, o#include<iostream> usingnamespace std; int main( )5 J5 p4 @! [- T c. R9 m
{
$ @; N6 y4 n# {map<int, int> m1;" M, T6 r& T3 q3 k5 V8 \( r1 `# ]
map <int,int>::iterator m1_Iter; m1.insert (pair <int, int> (1, 20 ) );
' K6 G4 ~. B% e9 e- p/ c, e( W/ `m1.insert ( pair<int, int> ( 4, 40) );
# r; }6 R" ?9 y- km1.insert ( pair<int, int> ( 3, 60) );% P* [, X D8 A' e& b/ C; a+ F: H
m1.insert ( pair<int, int> ( 2, 50) );% i$ { \5 K- W- f9 j/ F. m5 S
m1.insert ( pair<int, int> ( 6, 40) );3 C/ \; Q, x5 l' ^
m1.insert ( pair<int, int> ( 7, 30) ); cout<< "The original map m1is:"<<endl;0 z3 }1 r, O4 n% h) W4 T7 y$ n1 V
for ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ )
4 `0 Y5 u B8 B3 O5 Ucout << m1_Iter->first<<""<<m1_Iter->second<<endl;
* L/ y( p5 x# W& x# b6 ^& T; X% E3 F* X
}# |1 H4 v# }- X9 f
The original map m1 is:3 ]/ j5 R3 ^3 R" ]8 R; {
1 201 W. t9 j# C# f
2 50
7 ~3 Z) A0 J" h& J* V' ], ?7 i. K. ^7 w3 603 |! s4 v: s! s X0 c
4 40% S0 B* t# o# f9 T& P, E. k6 [
6 40
1 |% C6 M; @" U; ]; s& Z7 30 7. map的基本操作函数:; Y, I9 r, q. p* X' e
C++Maps 是一种关联式容器,包含“关键字/值”对3 ^7 d7 n' A* l$ @$ N- n
begin() 返回指向map头部的迭代器
" A; q; W" `2 sclear() 删除所有元素* w8 @" e- B1 t; }7 U( |8 q! B
count() 返回指定元素出现的次数2 ^1 l6 H, K. e4 p
empty() 如果map为空则返回true2 i: D& y7 {7 Y) T: b" y
end() 返回指向map末尾的迭代器 F0 @0 Z7 @' Q2 \) w# y
equal_range() 返回特殊条目的迭代器对0 q$ I: `+ T/ q* y( Z
erase() 删除一个元素
, a* s* f+ p+ @- u6 v2 ]) Mfind() 查找一个元素
4 G0 f+ ]# ~2 C. X3 S& ^ ~. cget_allocator() 返回map的配置器7 w8 | o( n8 a4 J6 |
insert() 插入元素
7 i' K& H; z4 G( w/ X9 L' Pkey_comp() 返回比较元素key的函数! `% E8 S- U+ O: T0 o
lower_bound() 返回键值>=给定元素的第一个位置
3 g N( R2 h* V: R+ F; s0 xmax_size() 返回可以容纳的最大元素个数' d! R, B. o7 ?- |3 j
rbegin() 返回一个指向map尾部的逆向迭代器! X% p- d c" w" S# s3 {3 c) f
rend() 返回一个指向map头部的逆向迭代器: Y; c# H2 S; U, C* M% Y
size() 返回map中元素的个数
] I1 N. b" z- T8 o) \swap() 交换两个map
4 d! X" I6 [5 ~/ H9 p$ ?# W1 B- Tupper_bound() 返回键值>给定元素的第一个位置4 U7 _9 q/ w2 l
value_comp() 返回比较元素value的函数
; D6 \( f) f. n; y! p |