请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
最全的c++map的用法此文是复制来的0.0 1. map最基本的构造函数;. a# k6 k. ~+ I! r4 k% J# J3 p( S
map<string ,int>mapstring; map<int,string >mapint;
- `: I; Y: J- vmap<sring,char>mapstring; map< char ,string>mapchar;+ M0 Q* d( G2 k0 H% h% U3 M
map<char,int>mapchar; map<int ,char>mapint; 2. map添加数据; map<int ,string>maplive;+ @* Z$ M" Y5 R$ A2 M/ n
1. maplive.insert(pair<int,string>(102,"aclive"));
! j0 ~3 d3 S$ D0 A" S/ B4 c5 I2. maplive.insert(map<int,string>::value_type(321,"hai"));
/ ]3 p0 l3 f$ j- W% p1 _3. maplive[112]="April";//map中最简单最常用的插入添加!
7 l0 ?4 _# e4 t: {1 t 3. map中元素的查找: find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。 map<int ,string >::iteratorl_it;; ; L& K/ F2 b" b9 O/ D* k; E7 U
l_it=maplive.find(112);//返回的是一个指针: J* F2 L' M& s- \, Z
if(l_it==maplive.end())
" L3 J& d3 S4 j2 d! Scout<<"we do not find112"<<endl;
. ^( }$ R+ V. Z1 jelsecout<<"wo find112"<<endl;
- t- P" u, U$ k1 c; z' z! |; `- D8 R + s l2 B! R6 Z+ B. L9 X& l0 c
map<string,string>m; if(m[112]=="") cout<<"we do not find112"<<endl;5 u- q1 h8 \7 H7 u; J4 d
4. map中元素的删除:% L. t0 A) A8 q! y0 g: M) ^) X
如果删除112;
8 F- s) ~; k3 d/ o* M/ @/ X) U% cmap<int ,string>::iterator l_it;;, A* j) ?9 E$ J% h8 G C" O: @- w% C
l_it =maplive.find(112);
/ H9 o' g; b; }if( l_it == maplive.end())/ P# `9 y6 P( s: ]' v) M1 K; u
cout<<"we do not find112"<<endl;
- u3 p( U' E& welse maplive.erase(l_it);//delete 112;
/ I; G. W6 G/ G( S 5. map中 swap的用法:3 S" V/ B/ c$ v) b
Map中的swap不是一个容器中的元素交换,而是两个容器交换;
4 d3 r; X4 s; e* {5 `+ yFor example:# N% m- [" F9 [$ h' [
#include<map>
' |# w% w7 K; `" T: t0 o) K' F#include<iostream> usingnamespace std; int main()! G3 Q% W1 S& y) ?# _. F1 O
{
* W1 ]( j2 a& T5 |) g, B+ D- Kmap <int, int> m1, m2, m3;
" ?/ M3 W/ ~; P! s3 g4 F9 Jmap <int,int>::iterator m1_Iter; m1.insert( pair <int, int>(1, 10 ) );- R; a) Z( a# t- ?4 k/ p
m1.insert ( pair <int,int> ( 2, 20 ) );
! v. \* s$ i9 tm1.insert ( pair <int,int> ( 3, 30 ) );
: e" p; v* N1 v$ o+ Am2.insert ( pair <int,int> ( 10, 100 ) );0 r9 K' @6 s$ h. ]: p
m2.insert ( pair <int,int> ( 20, 200 ) );; i8 j' O& p @0 r# f: \% `2 z
m3.insert ( pair <int,int> ( 30, 300 ) ); cout << "The original map m1is:";+ h1 {! g7 b' B' C# q2 A" R
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )
6 b' e5 R. f" vcout << " "<<m1_Iter->second;
8 y A0 Q' J' \0 Y+ j3 Acout << "."<< endl; // This isthe member function version of swap( F" L- X1 O1 ^# ^% |3 M% x
// m2 is said to be theargument map; m1 the target map
% E) Y) y; N9 B6 m; k6 jm1.swap( m2); cout << "Afterswapping with m2, map m1 is:";# N4 n$ T1 `) O
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )# W- p' V# {% \5 y3 q0 F/ @! W7 |
cout << " "<< m1_Iter ->second;
& p% b# ^! M# M0 Dcout << "."<< endl;
" H4 f! U+ @* }( G6 k. Ycout << "After swapping with m2, mapm2 is:";
- O* b+ @' c" R# efor ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )
% e# K+ U& Y R1 ]5 |/ wcout << " "<< m1_Iter ->second;/ ]# ~: d, p, D+ L7 p
cout << "."<< endl;
7 b2 t0 C" y; @. ^/ U& a// This is the specialized template version of swap8 u# u. w. O5 L
swap( m1, m3 );
cout << "Afterswapping with m3, map m1 is:";$ I r- i$ Q$ y, S+ R6 L$ y a3 S
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )% y7 l3 O9 ]1 A/ D3 G+ y7 q
cout << " "<< m1_Iter ->second;1 o" j. w$ a0 R1 C1 l
cout << "."<< endl;5 i: B9 g6 d% C5 Y! L' u4 }
} 6. map的sort问题:- d: v, l( |6 I
Map中的元素是自动按key升序排序,所以不能对map用sort函数:# m# q' C5 Z' F# j
For example:8 V ]& }/ w% A3 A" J
#include<map>, L( F$ ^ N% z3 Q
#include<iostream> usingnamespace std; int main( )
9 ^% N* I( j% x- {6 |{# h# [: j% V: s& x
map<int, int> m1;4 c& s, _* J5 c$ R- R, j* R
map <int,int>::iterator m1_Iter; m1.insert (pair <int, int> (1, 20 ) );
, T; O; g; @" w3 M) Pm1.insert ( pair<int, int> ( 4, 40) );
( `7 J5 S: b) i% T7 ^m1.insert ( pair<int, int> ( 3, 60) );
( z( u7 m3 X0 r5 Zm1.insert ( pair<int, int> ( 2, 50) );9 Y) u* d. _' Y0 N5 o
m1.insert ( pair<int, int> ( 6, 40) );: |( h* l( f( q' h y
m1.insert ( pair<int, int> ( 7, 30) ); cout<< "The original map m1is:"<<endl;
4 U1 ^5 c w3 H5 g, f5 Ffor ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ )# i3 Q/ H; t8 |7 B, I' d+ R
cout << m1_Iter->first<<""<<m1_Iter->second<<endl;1 p: \, c8 j0 V0 [* z4 X8 p
7 ~+ K) e9 V7 O5 ?0 m1 t}
9 c' h& o( c; m3 k+ u7 ] The original map m1 is:$ m0 E$ U5 G3 {+ ~) S7 z
1 20
# z' l4 c( R; J) T O- x2 508 u9 |/ i" S3 k( T( l2 Y
3 60
Y2 I( a! m2 M# r# N, r0 _1 j; ~4 40/ n$ X5 n, b1 T8 h1 |' X% t& @
6 40
0 q9 o# r2 O* J2 y5 s7 30 7. map的基本操作函数:
3 C Z- r2 ~! u1 f( o4 p% NC++Maps 是一种关联式容器,包含“关键字/值”对
+ c7 W) R0 @* E5 ?begin() 返回指向map头部的迭代器" o3 k& k; t) K
clear() 删除所有元素
6 j9 l) r, Y& C8 C$ q1 O" Acount() 返回指定元素出现的次数, z8 r/ z7 ^/ a' t) n
empty() 如果map为空则返回true
* u5 x6 J/ J( [: \$ m7 Send() 返回指向map末尾的迭代器, S1 x. V/ w8 I1 X2 A
equal_range() 返回特殊条目的迭代器对
; S9 m% a2 T- W. Uerase() 删除一个元素
" I7 |1 \2 @9 q; |" Vfind() 查找一个元素& e& U) U N1 Q$ n# a
get_allocator() 返回map的配置器
0 d1 W; ]* u0 e: A5 H R9 U( iinsert() 插入元素
/ H- \6 O7 P+ G+ p9 p+ okey_comp() 返回比较元素key的函数
, p4 z/ H. g3 y$ p: vlower_bound() 返回键值>=给定元素的第一个位置
; Q) D% t9 [; _- Z* Omax_size() 返回可以容纳的最大元素个数! f$ L" _7 U" m8 s$ n ]" l5 ?) Z# X- E
rbegin() 返回一个指向map尾部的逆向迭代器1 x; h4 S# K F# M9 B+ D* Y
rend() 返回一个指向map头部的逆向迭代器5 m4 A( P- p8 X" q6 F
size() 返回map中元素的个数
+ N6 H! m) E/ R. u5 e: W/ ]5 U Sswap() 交换两个map; N. }# r3 i% \
upper_bound() 返回键值>给定元素的第一个位置2 U/ K& [& p5 Q# ]6 k
value_comp() 返回比较元素value的函数
) O( B0 X4 M- r" ~* b |