PLM之家PLMHome-国产软件践行者

[转载电子书] 最全的c++map的用法

[复制链接]

2016-8-29 20:25:18 3576 0

mildcat 发表于 2016-8-29 20:25:18 |阅读模式

mildcat 楼主

2016-8-29 20:25:18

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
最全的c++map的用法

此文是复制来的0.0

1. map最基本的构造函数;
$ }$ ^1 t; N! Y, `" J3 omap<string ,int>mapstring; map<int,string >mapint;
% f/ ~: A# P& U1 p4 ^5 Z! I4 [. G& _  Lmap<sring,char>mapstring; map< char ,string>mapchar;
5 v% h: O+ K9 e" H7 V& e" y0 amap<char,int>mapchar; map<int ,char>mapint;

2. map添加数据;

map<int ,string>maplive;$ P  f/ f& v& ]$ |
1. maplive.insert(pair<int,string>(102,"aclive"));: d! o) O/ P9 M$ K8 R5 P; V+ }3 C
2. maplive.insert(map<int,string>::value_type(321,"hai"));- d6 J( k: r6 b' m# x
3. maplive[112]="April";//map中最简单最常用的插入添加!
- j; u# l0 k# d! Y

3. map中元素的查找:

find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。

map<int ,string >::iteratorl_it;;
; Y3 x. t" w6 {( O/ ^  C; H1 Hl_it=maplive.find(112);//返回的是一个指针! C9 n9 W* p- o1 d8 T5 S
if(l_it==maplive.end())
7 {. Q9 w( |) wcout<<"we do not find112"<<endl;
# b* \! l6 e0 nelsecout<<"wo find112"<<endl;  l2 e1 O: J, z  y' C5 {9 _

3 m. X: H- l/ l. A

map<string,string>m;

if(m[112]=="")

cout<<"we do not find112"<<endl;$ D3 L( L3 q. w/ r

4. map中元素的删除:
3 }. R' ^/ ^% q4 i) R3 \( k+ V' B如果删除112;( @6 M* Z) T8 `% @
map<int ,string>::iterator l_it;;, i  T" w. R3 ~* T$ N) y
l_it =maplive.find(112);1 O' N9 O9 ]* n6 e9 P
if( l_it == maplive.end())
+ F4 q7 G: v+ q9 Dcout<<"we do not find112"<<endl;
/ }0 A# B1 m, X: Z3 k$ @; felse maplive.erase(l_it);//delete 112;' j7 @* ^2 ?. `

5. map中 swap的用法:
2 V6 W/ |1 _2 k% m" e5 \$ z' GMap中的swap不是一个容器中的元素交换,而是两个容器交换;/ ?4 ~4 E& l& ~
For example:. k3 ]. {) O" K" O# }
#include<map>
& W3 r* j8 |+ o1 i- O#include<iostream>

usingnamespace std;

int main()$ `' v' s" |7 e& a  s6 l
{
4 X8 e2 h5 l) e. z5 n- p0 Imap <int, int> m1, m2, m3;9 j+ a' T' t# K7 @
map <int,int>::iterator m1_Iter;

m1.insert( pair <int, int>(1, 10 ) );
' }; G+ L9 a& E( h! A  z' Qm1.insert ( pair <int,int> ( 2, 20 ) );
$ g" i2 D# z8 h; Om1.insert ( pair <int,int> ( 3, 30 ) );
7 ?: p" g7 J" A$ `4 R2 R, o) wm2.insert ( pair <int,int> ( 10, 100 ) );* U1 p0 f, O( w
m2.insert ( pair <int,int> ( 20, 200 ) );: v0 [1 K2 z: f% Q1 }
m3.insert ( pair <int,int> ( 30, 300 ) );

cout << "The original map m1is:";
- v! i6 d: g& h/ X/ k. ?, J. ?for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )- ]9 I7 U1 \7 q! X* v4 X) k0 a
cout << " "<<m1_Iter->second;
; l3 F2 K- @8 Zcout << "."<< endl;

// This isthe member function version of swap
$ J  \- T5 b+ \/ v* y* {4 A' X// m2 is said to be theargument map; m1 the target map
" L; y6 z2 p: I: i% h* G9 \m1.swap( m2);

cout << "Afterswapping with m2, map m1 is:";  N# B7 {& s4 G% q- X; ^
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )
4 [' X7 A) M7 `7 S& W9 l- Fcout << " "<< m1_Iter ->second;
, X( B# h% n9 V- U# J3 U. ycout << "."<< endl;

) E$ L4 i1 Z5 T. S5 V  N
cout << "After swapping with m2, mapm2 is:";
9 t0 Z0 S1 _9 Nfor ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )
$ K: z0 h7 S/ S. scout << " "<< m1_Iter ->second;
8 T8 u1 S: q0 _4 ?% Ecout << "."<< endl;


6 y& s: O2 r0 k// This is the specialized template version of swap
$ ~% o1 I6 _9 }) ]# y4 _- Bswap( m1, m3 );

cout << "Afterswapping with m3, map m1 is:";
( R, ^" p: A7 q/ y7 i% B! s: ^for ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )7 S4 i  ~3 D6 K$ w+ m3 [0 ]
cout << " "<< m1_Iter ->second;
; M9 D' a' L' o9 P* N* J) ucout << "."<< endl;" P' |9 C3 K, Y" ?7 [2 Z' u
}

6. map的sort问题:9 m; m! j5 |) I3 q  A
Map中的元素是自动按key升序排序,所以不能对map用sort函数:' O( K- V  `8 P. I
For example:
7 I" L6 C5 V. E4 G8 k" O#include<map>7 i4 k4 U! p/ l7 }% U- S
#include<iostream>

usingnamespace std;

int main( ): }5 B; T% A$ \+ J9 X: m
{
6 n' w/ c+ c; k3 P1 _6 W$ O) s, omap<int, int> m1;
; m* _$ ?) B; l  k2 Bmap <int,int>::iterator m1_Iter;

m1.insert (pair <int, int> (1, 20 ) );
  P! a- D' d8 ]$ `; D8 Um1.insert ( pair<int, int> ( 4, 40) );
; P- y8 R; D6 H9 H1 t% d; qm1.insert ( pair<int, int> ( 3, 60) );8 a. b% T9 v' d9 i( O$ j/ o/ K  [$ m; d
m1.insert ( pair<int, int> ( 2, 50) );
% `2 ~3 n+ {" |1 j2 Z7 lm1.insert ( pair<int, int> ( 6, 40) );/ Y/ w! J) R) f! F
m1.insert ( pair<int, int> ( 7, 30) );

cout<< "The original map m1is:"<<endl;
9 Q4 @: L0 C6 xfor ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ )0 t; {) o4 D$ w0 o! ^
cout << m1_Iter->first<<""<<m1_Iter->second<<endl;, `8 A, F- i; b
) V8 }( y5 W, H$ Z0 K( x
}; }; m. t5 o+ u$ x

The original map m1 is:
: j/ M1 G8 ~  O3 l1 20
, |" g, t& |% ~7 O* W2 50# f7 F1 U) r+ `6 G' s+ z$ w
3 60
2 h( X: l$ @2 G" X5 l4 40
) [0 k* C: Y% Y, H6 40
- @+ X5 V) k+ I; G9 j( q7 30

7. map的基本操作函数:% b- Z% R& i% b5 ^' m7 q
C++Maps 是一种关联式容器,包含“关键字/值”对2 L! u) v+ w; E- R7 ^6 d
begin() 返回指向map头部的迭代器5 L7 ^, N( v; Y* Z. }
clear() 删除所有元素$ l/ M" k. u% p: P
count() 返回指定元素出现的次数& g$ Y' O  B9 @# [& y  e) l
empty() 如果map为空则返回true, u# f, ~& o4 A2 H5 h
end() 返回指向map末尾的迭代器
/ K9 g  A6 p/ L, mequal_range() 返回特殊条目的迭代器对5 y7 H5 \* h7 j8 {
erase() 删除一个元素
- ]. _2 ^9 y2 r1 E% f' X6 gfind() 查找一个元素3 D# z# a) ?5 b& R
get_allocator() 返回map的配置器1 C" W6 {9 y2 _2 c
insert() 插入元素
. P; ~3 }5 E- q9 Rkey_comp() 返回比较元素key的函数% M3 G4 H. q& Z- I$ m: Q* x
lower_bound() 返回键值>=给定元素的第一个位置
) `+ x2 r5 c! p6 Z  l, Imax_size() 返回可以容纳的最大元素个数
" g. B* J5 _' {9 j- s( h0 Vrbegin() 返回一个指向map尾部的逆向迭代器
2 V; Z5 P5 G7 [% V$ t* f  lrend() 返回一个指向map头部的逆向迭代器
* j! U8 X" T" R1 osize() 返回map中元素的个数
3 V* s) A- |2 D! Q! H  |, D( h. A+ c2 qswap() 交换两个map
7 U' ^8 ~! r$ u; A3 yupper_bound() 返回键值>给定元素的第一个位置4 b0 y: O  x; u6 m# N* {
value_comp() 返回比较元素value的函数


- ~" _; l) e! k" P, D( T' K
该会员没有填写今日想说内容.
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了