请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
最全的c++map的用法此文是复制来的0.0 1. map最基本的构造函数;
: M0 q. a& B5 tmap<string ,int>mapstring; map<int,string >mapint;
* y, }$ G& ?- M r$ u) w% omap<sring,char>mapstring; map< char ,string>mapchar;; w/ k5 F! O) r- z8 F" {" q+ I! v
map<char,int>mapchar; map<int ,char>mapint; 2. map添加数据; map<int ,string>maplive;
% ?9 l! x0 Z! |" S/ T: P! I1. maplive.insert(pair<int,string>(102,"aclive"));$ a# Z- P L4 a2 v3 L4 T
2. maplive.insert(map<int,string>::value_type(321,"hai"));# Q8 V) B; p0 [4 e8 |
3. maplive[112]="April";//map中最简单最常用的插入添加!
; @$ F1 @; A8 E3 e9 ] 3. map中元素的查找: find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。 map<int ,string >::iteratorl_it;;
0 y; }; b. |1 [" b, P# k: Dl_it=maplive.find(112);//返回的是一个指针5 n8 V; u9 k7 l
if(l_it==maplive.end())
: J4 J& w+ Q. d, O# s7 P$ E! Mcout<<"we do not find112"<<endl;% j6 X# N' e( ^* U; [/ ` s$ m" {
elsecout<<"wo find112"<<endl;) j# n1 i( b1 t+ S" M5 v
, ]7 d% b# p2 b& J) { X
map<string,string>m; if(m[112]=="") cout<<"we do not find112"<<endl;
! }8 U% S- F( N' U& C( H 4. map中元素的删除:( v8 Z, z1 U0 P7 d- H: x
如果删除112;, w1 s- N i2 l
map<int ,string>::iterator l_it;;+ z' {; k# _$ t; B9 o" K7 j
l_it =maplive.find(112);9 J3 b) W; h2 u v' i$ e8 D
if( l_it == maplive.end())
% A; d$ S+ g5 pcout<<"we do not find112"<<endl;) b2 }9 i$ F/ H# w* n6 g
else maplive.erase(l_it);//delete 112;, R5 Y2 X* S# q! Z7 i; \
5. map中 swap的用法:
$ r$ M2 W9 U# N7 [5 z) C) j$ z2 hMap中的swap不是一个容器中的元素交换,而是两个容器交换;
, K4 N8 Y' w6 h3 E9 g) gFor example:( r8 C6 @# ]5 @- n0 W! a5 r) C
#include<map>+ H2 a9 o% f& `% ?9 C& J' p5 H" Z
#include<iostream> usingnamespace std; int main()9 Q" Q( R+ J. d( H9 M4 \
{" m( h; C) O" w' N: T7 T" {
map <int, int> m1, m2, m3;) k" {/ g" v) D7 p
map <int,int>::iterator m1_Iter; m1.insert( pair <int, int>(1, 10 ) );
3 X8 J( N" B% cm1.insert ( pair <int,int> ( 2, 20 ) );; v+ p1 w: I3 g# N
m1.insert ( pair <int,int> ( 3, 30 ) );0 i' z+ m/ f6 t
m2.insert ( pair <int,int> ( 10, 100 ) );
9 B. F+ B9 g3 c/ c4 vm2.insert ( pair <int,int> ( 20, 200 ) );( ]* v! i/ E; J$ J
m3.insert ( pair <int,int> ( 30, 300 ) ); cout << "The original map m1is:";
9 A. [2 S' e1 `$ f- M' k& ^/ B( {for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )( i" d: A7 \; W- L# }. R1 j' \; N
cout << " "<<m1_Iter->second;3 Q F7 D( Q0 D; z
cout << "."<< endl; // This isthe member function version of swap1 B+ A" ]4 H7 V; S' b3 I
// m2 is said to be theargument map; m1 the target map9 [ c. a7 d# _! @* j9 e: ?* [
m1.swap( m2); cout << "Afterswapping with m2, map m1 is:";" b2 b2 d- `! L! S- l3 t
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )
0 _3 `) b- R! c0 q2 }4 x" ucout << " "<< m1_Iter ->second;0 k- J r F r6 d+ Z. h0 U9 M8 V
cout << "."<< endl;
* F* j! M2 d9 d$ Z, U; ?cout << "After swapping with m2, mapm2 is:";
, ~' M# D4 u; j; `# m# h9 |for ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )3 n! e$ C& ]% I! [3 ~
cout << " "<< m1_Iter ->second;/ Z2 j6 a! }* I# {
cout << "."<< endl;
$ t5 g$ U0 k' U, Z1 E* A. Q' j3 b// This is the specialized template version of swap2 E9 ~7 ?* q+ C
swap( m1, m3 );
cout << "Afterswapping with m3, map m1 is:";0 t, ^4 M' V1 z4 L8 e
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )
2 k( K- s6 {5 R, n" A! x- Xcout << " "<< m1_Iter ->second;
7 Y% k$ n# {% Tcout << "."<< endl;0 A( }7 _+ u% @3 z- r
} 6. map的sort问题:/ i5 s. W& b: K# I
Map中的元素是自动按key升序排序,所以不能对map用sort函数:- G$ I+ j% \6 `
For example:7 O1 D3 X# ^, P0 D8 @/ S
#include<map>7 Q4 n. x4 K5 S+ w& e
#include<iostream> usingnamespace std; int main( )# e: w* X7 \% Q' B/ H0 J7 ~
{
5 s( e. I6 n; K0 l3 _map<int, int> m1;: o" ~8 {: x3 B% M4 N5 ~' K0 F( r6 \
map <int,int>::iterator m1_Iter; m1.insert (pair <int, int> (1, 20 ) );0 l5 L! ?8 w5 M; M/ U
m1.insert ( pair<int, int> ( 4, 40) );
8 ~" e$ r b: U$ M2 ]" p" fm1.insert ( pair<int, int> ( 3, 60) );
+ m" r0 F- ~% {( Sm1.insert ( pair<int, int> ( 2, 50) );8 ?7 [8 d, f8 c9 }
m1.insert ( pair<int, int> ( 6, 40) );
5 v0 ]9 p* g+ f+ O9 ym1.insert ( pair<int, int> ( 7, 30) ); cout<< "The original map m1is:"<<endl;
+ b/ C9 V8 G) J# d% }" d' mfor ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ )2 W; s5 f% ~ e) w7 J+ L( K- g
cout << m1_Iter->first<<""<<m1_Iter->second<<endl;* v8 S2 g& p3 M* o/ H2 j
& C8 J& q, S6 C$ D}0 f, S" g# G1 g j
The original map m1 is:
& t# ^3 \5 F S0 v& J, L1 20
- p# N# Z: h& J$ C6 x8 j3 j2 50
5 w, J* h; x0 L8 j9 e3 60
: _7 T3 \( X5 y4 40
3 A5 B5 @% f/ G) s8 }6 40" P8 L" ^1 g" m# F6 _& \- U
7 30 7. map的基本操作函数:9 U# O, k) D* x. [! C7 L
C++Maps 是一种关联式容器,包含“关键字/值”对
( j" y4 N" O9 H, t! }" V0 Ybegin() 返回指向map头部的迭代器
4 @+ f2 K" }, d+ X* K) c; Mclear() 删除所有元素
1 {( ]2 S' e1 l- R& [' [count() 返回指定元素出现的次数# {0 I1 ~$ m8 l4 ]
empty() 如果map为空则返回true
P' r2 T. S" H2 S/ t' L9 e. p7 _end() 返回指向map末尾的迭代器2 X/ m( o2 x$ w) i
equal_range() 返回特殊条目的迭代器对% k/ y4 d( n' Q8 l0 ?
erase() 删除一个元素1 B$ W# J% r/ ^4 ~; a) _% @. ]
find() 查找一个元素
1 z' a% k* W. [# Y7 j: b: Vget_allocator() 返回map的配置器" G; H2 ~/ S3 i
insert() 插入元素
) \0 W( l# e1 H3 rkey_comp() 返回比较元素key的函数
# u8 Q8 u; I- Mlower_bound() 返回键值>=给定元素的第一个位置, R5 m+ q/ R: h o3 ?3 b' A
max_size() 返回可以容纳的最大元素个数
2 T+ p; \( i( [- g: T: B. xrbegin() 返回一个指向map尾部的逆向迭代器
; h; E# r* E( V. T6 g" h% w8 `rend() 返回一个指向map头部的逆向迭代器
4 \/ T3 \4 W5 `# B$ Asize() 返回map中元素的个数' ]& u9 R7 d1 ]
swap() 交换两个map
$ @5 `' S7 \# ^5 l$ jupper_bound() 返回键值>给定元素的第一个位置
: N- s7 f5 k$ q1 Wvalue_comp() 返回比较元素value的函数 : u( @5 k* `) w, w
|