请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
最全的c++map的用法此文是复制来的0.0 1. map最基本的构造函数;
( V- U" u) _* ~ N8 Dmap<string ,int>mapstring; map<int,string >mapint; r- i) x5 Z/ v* G- Q+ B; X Y' I7 ?
map<sring,char>mapstring; map< char ,string>mapchar;
' T4 x& K9 u2 L$ tmap<char,int>mapchar; map<int ,char>mapint; 2. map添加数据; map<int ,string>maplive;
4 m4 Y8 }$ L3 V# R% P$ [1. maplive.insert(pair<int,string>(102,"aclive"));1 H8 O+ R* N% e4 C' \$ k7 G
2. maplive.insert(map<int,string>::value_type(321,"hai"));
* e+ Y* D) B5 p; N V3. maplive[112]="April";//map中最简单最常用的插入添加!
# I0 N' g& F8 R4 ?0 _ 3. map中元素的查找: find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。 map<int ,string >::iteratorl_it;; 3 P5 c& a8 G( i! V
l_it=maplive.find(112);//返回的是一个指针0 i8 O- f3 Y. i
if(l_it==maplive.end())# ]' T g3 y$ i+ B9 G6 X7 X7 Y
cout<<"we do not find112"<<endl;% L( |. R' u! g: } P0 v
elsecout<<"wo find112"<<endl;
" `2 y4 F% p' X8 y8 D2 Z, R9 t" r ) J' b6 ?& \9 [
map<string,string>m; if(m[112]=="") cout<<"we do not find112"<<endl;1 v( L; V: S& z" {( C
4. map中元素的删除:! v' m& Y3 O5 w# T5 b4 { F) Y
如果删除112;# E: w. |) S2 ]0 i% Y* C' `* F
map<int ,string>::iterator l_it;;
! O: d% \3 u/ _6 f, v$ ^l_it =maplive.find(112);
+ L' T, S9 _2 q) r" E5 }3 O! _if( l_it == maplive.end()); c4 l7 ^* e# R. j
cout<<"we do not find112"<<endl;6 L8 L5 c& R, u* L* l* D. ]- a
else maplive.erase(l_it);//delete 112;
5 ]/ l$ J9 X% m$ ?7 u3 x K 5. map中 swap的用法:
5 S8 }& \$ f2 @# |( n$ NMap中的swap不是一个容器中的元素交换,而是两个容器交换;4 p- _( m8 T/ [( k% F
For example:
- Q: V; ?4 T' I- J6 c#include<map>
* ?# J, [0 n% T& N G) G2 X) q' B#include<iostream> usingnamespace std; int main(), @& u4 r) k- G9 l2 ~
{
/ d2 H1 V* i! P; jmap <int, int> m1, m2, m3;: F- [3 ?) P! B$ z3 G
map <int,int>::iterator m1_Iter; m1.insert( pair <int, int>(1, 10 ) );
% |; A& w1 E. G) ~" Vm1.insert ( pair <int,int> ( 2, 20 ) );5 P; p+ {; Y8 N4 \( |! h
m1.insert ( pair <int,int> ( 3, 30 ) );
, t( E j# }0 `; |; r* c: `9 ?m2.insert ( pair <int,int> ( 10, 100 ) );
* N0 s* L6 u; ~% y, Wm2.insert ( pair <int,int> ( 20, 200 ) );# a' L9 g. P" i
m3.insert ( pair <int,int> ( 30, 300 ) ); cout << "The original map m1is:";- ?; H+ i) A6 o4 o
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )/ y8 u; N8 {' r, \
cout << " "<<m1_Iter->second;
* Z6 m$ Q L2 k W$ m7 X2 J! wcout << "."<< endl; // This isthe member function version of swap2 g: @* A) Y$ J5 i e$ g
// m2 is said to be theargument map; m1 the target map
9 l4 t& L9 {' j/ p8 dm1.swap( m2); cout << "Afterswapping with m2, map m1 is:";
$ F7 a' o9 X. A l1 Z: q Pfor ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )4 V4 N' ]' w+ Z- d" C
cout << " "<< m1_Iter ->second;5 F+ ^/ F% B" A3 ?8 h
cout << "."<< endl;
- b; B# s/ w9 |* M& Tcout << "After swapping with m2, mapm2 is:";. x* W) P6 i: h8 K, c+ `
for ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )* F E8 @% V/ w( Q0 X
cout << " "<< m1_Iter ->second;
7 p8 A2 ]# V/ O7 K* M% Ncout << "."<< endl;
. k* `: l4 Z" K) {// This is the specialized template version of swap
" Q, M, h3 x ]& D0 y uswap( m1, m3 );
cout << "Afterswapping with m3, map m1 is:";
0 u/ N6 g' O: h& Rfor ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )
- S; g# u) H! S) {cout << " "<< m1_Iter ->second;4 r v2 y; R5 l9 J: \ S
cout << "."<< endl;
# q+ n- b; ?( a* T$ y} 6. map的sort问题:
" }2 m7 U3 u# O: O) SMap中的元素是自动按key升序排序,所以不能对map用sort函数:: @$ x/ K% X* H. K- @! }* ?
For example:7 S+ ^9 x& b3 c, Y2 A) h. j4 ?
#include<map>
7 _: i1 `: s( [3 x#include<iostream> usingnamespace std; int main( ): o4 O2 X. t+ X' }
{$ K/ C# Q/ u$ l d3 p" x
map<int, int> m1;* D1 b. Q* ^) t( p& }2 l
map <int,int>::iterator m1_Iter; m1.insert (pair <int, int> (1, 20 ) );3 X7 x# l* {6 W& D
m1.insert ( pair<int, int> ( 4, 40) );* }! T: L6 m4 l* M
m1.insert ( pair<int, int> ( 3, 60) );
$ E. d2 p" T6 X5 ?! T+ I l, n7 Tm1.insert ( pair<int, int> ( 2, 50) );
5 O _9 O9 Z) U5 {m1.insert ( pair<int, int> ( 6, 40) );
9 M; k% t/ @( A7 P3 i; {5 N( s4 xm1.insert ( pair<int, int> ( 7, 30) ); cout<< "The original map m1is:"<<endl;
8 T! ~+ ^# t/ p+ _: u. t# Ofor ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ )2 R- a+ Y5 H" a. p
cout << m1_Iter->first<<""<<m1_Iter->second<<endl;# f7 l& c9 X- ?7 a( `
4 ?5 T& l$ s/ g: ]
}) `/ I6 e T3 _; M
The original map m1 is:
( \ D" U5 k0 a0 y) D b$ \3 i. x1 20
9 K7 w" O5 B3 J$ _3 G( g& K# x* C. L2 50
1 O. Y% t" n- B% V; F. w. F, w3 60- j/ L* N3 |! _/ ^
4 40
, ?- R2 {4 ]4 o6 40
7 ` H! l9 d7 l3 _2 h; t. ^- G$ j7 S7 30 7. map的基本操作函数:
& [$ u5 T; ~; v1 ]C++Maps 是一种关联式容器,包含“关键字/值”对
a( Y6 i$ n& B& p1 {begin() 返回指向map头部的迭代器3 v' I5 n! L) z* b
clear() 删除所有元素! k! w2 C0 Y, ]
count() 返回指定元素出现的次数
& K0 p* g, `* V7 h7 Uempty() 如果map为空则返回true
; r& F1 `* v9 m1 W# |end() 返回指向map末尾的迭代器( g, y6 l, V0 f, ]: v9 y
equal_range() 返回特殊条目的迭代器对
. [- c; A8 Q8 n# [ j3 Q! Cerase() 删除一个元素
4 u: o W/ x) d* Nfind() 查找一个元素
. o8 |( C) s6 e4 kget_allocator() 返回map的配置器. ~4 S1 g" G4 W* U$ c
insert() 插入元素
# ^6 D, L' M4 s& {1 ckey_comp() 返回比较元素key的函数, R# A6 K8 S# G2 E8 `9 [; P
lower_bound() 返回键值>=给定元素的第一个位置/ Z$ W$ p' G0 J! d3 V8 \" I! X
max_size() 返回可以容纳的最大元素个数/ X' e! b# P; J/ D7 @$ P+ E
rbegin() 返回一个指向map尾部的逆向迭代器6 R1 G' t- I# L2 `9 M1 p+ Q
rend() 返回一个指向map头部的逆向迭代器( N6 q! q0 G0 P- G, \7 ^& H, P" e3 Z
size() 返回map中元素的个数# P. y1 s% o- R0 ~8 q
swap() 交换两个map- c) p% r& d' D
upper_bound() 返回键值>给定元素的第一个位置9 M% }3 C; p- J) m& Q
value_comp() 返回比较元素value的函数 * m( W5 f9 H. p7 ~. X0 s
|