PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

mildcat 楼主

2016-8-29 20:25:18

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

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

x
最全的c++map的用法

此文是复制来的0.0

1. map最基本的构造函数;
: x6 x0 f$ ~! A% o1 zmap<string ,int>mapstring; map<int,string >mapint;
* K2 o0 z7 U, `7 r: i; i3 ~% ]map<sring,char>mapstring; map< char ,string>mapchar;
* I4 B; X. `* T# \3 lmap<char,int>mapchar; map<int ,char>mapint;

2. map添加数据;

map<int ,string>maplive;, P8 o" @" r, }0 k3 X  T% J
1. maplive.insert(pair<int,string>(102,"aclive"));
* b7 r' ]5 v& \/ G  ?2. maplive.insert(map<int,string>::value_type(321,"hai"));4 U% a- Z' B0 X, [0 M
3. maplive[112]="April";//map中最简单最常用的插入添加!
/ G7 B8 r1 c) g" {# z

3. map中元素的查找:

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

map<int ,string >::iteratorl_it;; * ?  e2 E4 \; S; _6 K
l_it=maplive.find(112);//返回的是一个指针
- w! h' g9 [  a: s$ Fif(l_it==maplive.end())
& o+ s6 J- w+ N+ Acout<<"we do not find112"<<endl;
' I8 k, [: d1 g: L& M: c" \elsecout<<"wo find112"<<endl;. o6 K( v: k, B" G' C

5 q- O7 R: b% z9 p; a. [

map<string,string>m;

if(m[112]=="")

cout<<"we do not find112"<<endl;' J' T/ T6 w4 w; J5 Q: A

4. map中元素的删除:" f1 E; g- O) }4 _6 e! ^
如果删除112;
$ S4 F' b, e$ ?9 V* n/ U) W/ J" H% P4 @map<int ,string>::iterator l_it;;
0 r4 u$ ?" e3 H7 Z6 Il_it =maplive.find(112);
$ M! ?& {; d$ x2 V2 ^if( l_it == maplive.end())
7 V4 ^, }% \8 I+ h- H1 hcout<<"we do not find112"<<endl;% _; M0 W# A! }7 }' K: r
else maplive.erase(l_it);//delete 112;
) c7 p* x+ z4 p7 _

5. map中 swap的用法:
/ H) ~: u/ }% N. RMap中的swap不是一个容器中的元素交换,而是两个容器交换;7 V7 R9 J7 E$ B# h) m
For example:
. ]- v9 R# ~% e1 Z  S#include<map>
+ ?+ q, W2 S  u#include<iostream>

usingnamespace std;

int main()
& w5 y) ^6 w' J" H) @% E{3 |1 y5 |+ G0 B: a' H5 j; M
map <int, int> m1, m2, m3;' d" ]" h9 d, ]7 T) K6 J9 Q! K
map <int,int>::iterator m1_Iter;

m1.insert( pair <int, int>(1, 10 ) );
  ^1 s9 k- ^4 |4 e/ wm1.insert ( pair <int,int> ( 2, 20 ) );
3 j' J8 `& b) h* Sm1.insert ( pair <int,int> ( 3, 30 ) );
, a- g7 d9 N3 q. x! G* z0 T; \m2.insert ( pair <int,int> ( 10, 100 ) );" S9 l/ N  l" v5 O" c+ @/ j
m2.insert ( pair <int,int> ( 20, 200 ) );: j( A# ^2 ^, I1 w8 X1 O8 q
m3.insert ( pair <int,int> ( 30, 300 ) );

cout << "The original map m1is:";/ p; K% J2 }( g. \2 A% P! r: G
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ ); L  Q% A1 P- x9 u) x6 t
cout << " "<<m1_Iter->second;
1 H7 a. T# b3 Z* Icout << "."<< endl;

// This isthe member function version of swap
1 M: t0 K% B8 h. ~; W% E! U// m2 is said to be theargument map; m1 the target map
3 b2 `$ s2 d* M* W( mm1.swap( m2);

cout << "Afterswapping with m2, map m1 is:";6 v! o( h; y2 c8 k3 N. _9 M; r6 z# [
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )% y$ [' j# {- E1 {
cout << " "<< m1_Iter ->second;
0 ?' K3 E+ r' Y$ t0 w7 {* y. ?/ Jcout << "."<< endl;


9 t+ y% S$ P3 a* H9 jcout << "After swapping with m2, mapm2 is:";
* v5 d( K6 p8 @; J6 Afor ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )
' R: V- r* k/ Ecout << " "<< m1_Iter ->second;; O  J' p- {- @* G2 @
cout << "."<< endl;


3 z* A9 c7 n6 k: Z// This is the specialized template version of swap. v8 [/ _) C  \4 J6 Z( Q
swap( m1, m3 );

cout << "Afterswapping with m3, map m1 is:";
( U: V0 K) z9 b! Q* y5 a$ Xfor ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )5 C2 s0 V1 W% c: i& |5 f
cout << " "<< m1_Iter ->second;) ?* H* k9 x# J% b6 W" p. z$ v; |
cout << "."<< endl;9 D4 y% [7 Z) T' G5 X/ ^, D3 u" U
}

6. map的sort问题:& s: m) u8 }( H( v8 D
Map中的元素是自动按key升序排序,所以不能对map用sort函数:" H0 l( p9 |4 n; {) [
For example:
! P8 _3 l1 D1 a- c6 \& D#include<map>
4 n# ^. C: ]9 N#include<iostream>

usingnamespace std;

int main( )
, M3 z; [/ K" c' a, V# n- m  B5 p{& [$ z2 O8 i; e  N# D) I
map<int, int> m1;
5 z, d; [/ l) J4 g1 i. a: r  H/ J: umap <int,int>::iterator m1_Iter;

m1.insert (pair <int, int> (1, 20 ) );8 d1 K3 _3 L0 L! s, G. A
m1.insert ( pair<int, int> ( 4, 40) );8 H$ w. I2 |/ s) ^* o* f/ D8 g. T
m1.insert ( pair<int, int> ( 3, 60) );  E% \& R/ a0 r
m1.insert ( pair<int, int> ( 2, 50) );
0 N. e0 @; O8 j4 R& |m1.insert ( pair<int, int> ( 6, 40) );
2 }# c+ X( P* y- om1.insert ( pair<int, int> ( 7, 30) );

cout<< "The original map m1is:"<<endl;- y# k! W- g/ q3 H6 I' j
for ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ ); R3 P/ A( k( k" O
cout << m1_Iter->first<<""<<m1_Iter->second<<endl;
3 u9 t' T) ]* H8 }1 m
; m7 n# Q) a* L2 g8 R/ q) m2 x2 {: a3 ^}
, S% K( a& h% ]( D: \

The original map m1 is:
$ y6 x' u" M! A$ d6 g8 Z, Z1 20
0 T- E5 J) K6 X7 H8 Z2 50
5 l% p# k3 ]* e- s" o" W3 60
2 s) m1 M% N4 k9 Q& p1 @- I$ V4 40
+ W1 t$ e" I. L8 j6 404 Z; J, z6 o* F$ Z) c& |4 J5 ?$ Q
7 30

7. map的基本操作函数:3 J1 j0 s# W4 I
C++Maps 是一种关联式容器,包含“关键字/值”对2 Q! r. Q# N: L
begin() 返回指向map头部的迭代器5 x8 Z" o# r9 m, {1 S% ]% v
clear() 删除所有元素% Z" \5 d- `# s3 a3 G
count() 返回指定元素出现的次数
1 a0 D- X0 d: p; q. w- P% dempty() 如果map为空则返回true6 R% d$ @8 ?' R. h* J
end() 返回指向map末尾的迭代器. \3 W/ [9 {6 `! \+ m1 K% x" N
equal_range() 返回特殊条目的迭代器对. k+ B6 o* g$ t5 @9 a
erase() 删除一个元素9 a& A. H3 K3 o8 S5 m& O& e
find() 查找一个元素! W$ B4 _/ _- M" s
get_allocator() 返回map的配置器& p2 T" }; S( t& s9 M
insert() 插入元素
! R. [- ^" Z- |4 f7 d! D5 Ckey_comp() 返回比较元素key的函数# r- R, A4 J5 Y
lower_bound() 返回键值>=给定元素的第一个位置$ _( y6 D; e2 t; T  B
max_size() 返回可以容纳的最大元素个数3 u; ^- A4 P. H8 K8 f
rbegin() 返回一个指向map尾部的逆向迭代器
# K& R0 y+ V) |6 C% zrend() 返回一个指向map头部的逆向迭代器) n4 W6 f: |% I2 @
size() 返回map中元素的个数
  U- P+ d/ s  e1 e7 A2 o+ ^/ ]swap() 交换两个map
' a2 r; \8 b* y9 l) nupper_bound() 返回键值>给定元素的第一个位置0 K0 @7 U7 j$ q( v7 ?# {
value_comp() 返回比较元素value的函数


$ i6 ~% v( ?+ l# C1 b0 G% [4 m
该会员没有填写今日想说内容.
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了