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类的具体用法实例讲解

[复制链接]

2014-1-3 19:37:45 4302 0

mildcat 发表于 2014-1-3 19:37:45 |阅读模式

mildcat 楼主

2014-1-3 19:37:45

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

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

x
1.map的构造函数; _- q% a5 Z; p/ i8 Q# U
Map<int, string> mapStudent;
( M: j. R& g8 d* g# c8 d2. 数据的插入
/ h) ~5 W2 \6 c在构造map容器后
; J9 Q4 T, y6 u# P7 u9 t& y第一种:用insert函数插入pair数据
2 \. R9 x! L! M/ f& O/ N5 U6 I: r#pragma warning (disable:4786) )# g! A% T2 q: Y7 j5 x8 Y4 [
#include <map>
' L+ r" j/ X  j+ C$ ]) [/ k8 K#include <string>1 t. `* C: [% k& ?/ A
#include <iostream>$ f; W2 J) ?1 a0 R' D! o4 [
Using namespace std;
0 Z' M+ z7 `  x% d0 e# HInt main()- T' B+ l5 v2 [
{
! }; ?0 n8 y8 Q# {$ d" A       Map<int, string> mapStudent;
( @) O+ p) j5 _3 |, C+ n       mapStudent.insert(pair<int, string>(1, “student_one”));6 j) p0 A! t( f
       mapStudent.insert(pair<int, string>(2, “student_two”));+ _: g; R& m. |- l9 }9 N1 ^" d
       mapStudent.insert(pair<int, string>(3, “student_three”));
9 j8 V4 G) ^. u4 A( I       map<int, string>::iterator iter;! d2 u8 }1 L8 w6 _$ f0 T: f
       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
$ q" J/ O: _6 c2 @5 [& G4 W7 D{5 o, X) ~4 j$ O6 \7 D! ?' w3 i5 ]
       Cout<<iter->first<<”   ”<<iter->second<<end;/ o$ N0 M$ @+ b" m+ ^& _3 `
}: R0 I7 Y. ^( ^4 ~& H. C4 q7 P0 P
}, U8 f& r& Y" h8 u
第二种:用insert函数插入value_type数据,下面举例说明/ f7 E" d  t2 _0 ~9 |: c
#include <map>! n$ g7 c9 w/ O, Z9 U
#include <string>
+ h% G7 n& {+ [#include <iostream>6 r4 i* Y$ |$ }- R$ b) L
Using namespace std;. i7 q4 j0 S5 |* R; C* C
Int main()
5 ~+ E# K, F9 n) w* p# R{7 P9 Q! y2 D: U; A  M1 G3 ~
       Map<int, string> mapStudent;. j# }9 J6 R. v; a' \
       mapStudent.insert(map<int, string>::value_type (1, “student_one”));0 b! K' a9 w2 y3 \1 p* t
       mapStudent.insert(map<int, string>::value_type (2, “student_two”));4 ~, s! ?" d: z- U+ j& ?% U
       mapStudent.insert(map<int, string>::value_type (3, “student_three”));
' k* [* Y3 K  _+ u. W6 ]3 N       map<int, string>::iterator iter;4 O) Y. m1 M: w5 f4 C  R- t
       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)' G# C3 K+ v0 u9 M
{
5 j# V# a# X/ Z; v$ w       Cout<<iter->first<<”   ”<<iter->second<<end;
3 ?) [' x- I3 t. x3 r+ ~6 \. f}2 ^/ x7 d7 d% J1 b* v0 J: _9 u
}( X) _+ R* P% t4 V3 x' \9 E
第三种:用数组方式插入数据,下面举例说明
7 w8 A8 D0 i$ _& y1 P. P#include <map>
- B# k1 U; D; Z2 ?# h5 r. J#include <string>
- z* K6 I9 {- X- i#include <iostream>
8 @7 d" L/ R- M+ K1 CUsing namespace std;
/ K- |  e8 C  j* mInt main()5 g& G1 @8 ~& p; o3 Q
{6 m' I- S" p2 \: G. v6 y. v+ \
       Map<int, string> mapStudent;
# w/ G+ v: K4 y! I       mapStudent[1] =  “student_one”;
$ P- ^: z: s8 B: d! A       mapStudent[2] = “student_two”;
- t4 q9 C: F$ E8 y       mapStudent[3] =  “student_three”;  `3 k: q. p9 u# I
       map<int, string>::iterator iter;9 ]) R; d$ P& Q& N  d
       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
: P4 h8 k  n+ Q1 r{
1 S! @2 n2 u4 x. T       Cout<<iter->first<<”   ”<<iter->second<<end;3 v* o" Z$ w- ?0 i
}; ^9 ]/ R! B" Y
}3 c# h. P9 _! c% f9 A
以上三种用法,虽然都可以实现数据的插入,但是它们是有区别的,当然了第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是插入数据不了的,但是用数组方式就不同了,它可以覆盖以前该关键字对应的值,用程序说明/ L7 Y; ~+ E7 m* U
mapStudent.insert(map<int, string>::value_type (1, “student_one”));3 w% A6 o3 d# V8 L. f, D( c/ z
mapStudent.insert(map<int, string>::value_type (1, “student_two”));
' N* {; K- j. }& V5 `5 u上面这两条语句执行后,map中1这个关键字对应的值是“student_one”,第二条语句并没有生效,那么这就涉及到我们怎么知道insert语句是否插入成功的问题了,可以用pair来获得是否插入成功,程序如下0 b$ o: E+ z, `# H
Pair<map<int, string>::iterator, bool> Insert_Pair;
: D+ H7 u4 l9 S3 {  qInsert_Pair = mapStudent.insert(map<int, string>::value_type (1, “student_one”));
4 S; {3 M; G( d0 N" \- s/ ?8 T6 g7 n我们通过pair的第二个变量来知道是否插入成功,它的第一个变量返回的是一个map的迭代器,如果插入成功的话Insert_Pair.second应该是true的,否则为false。
3 t- M" K$ ~; V+ n8 Y下面给出完成代码,演示插入成功与否问题
4 ]- y  I9 M. D$ ?; E9 @#include <map>
6 Q! t, t! k3 U6 b; \9 _0 U#include <string>
/ s: y% n5 T' D% y& X1 ]#include <iostream>
& |7 q0 S4 Z, ]7 UUsing namespace std;8 d( p" S6 c, [1 X9 T
Int main()" c- b) p1 _* @& V
{
. S, }( `2 E2 Z0 e$ }/ q  b       Map<int, string> mapStudent;
% X, }. ~" \$ ^4 i; ~  fPair<map<int, string>::iterator, bool> Insert_Pair;3 ^3 C" H: V. H$ a! m0 b9 l6 p
       Insert_Pair = mapStudent.insert(pair<int, string>(1, “student_one”));
+ N* w9 m6 Q+ K; p4 {: W  c' g       If(Insert_Pair.second == true)
$ c, X1 t% ]5 B8 }9 P) J/ i' ~       {1 v" j' d' T) U7 q# Z" g4 {( h+ U% r- p
              Cout<<”Insert Successfully”<<endl;
1 A# _0 ~$ J. s: Y8 |+ g& M       }  ]/ }( X5 V  P
       Else. z3 [0 G; u, o( V  o  u- J
       {- f1 v0 I" q8 ]7 f) u/ D; R; h$ Y
              Cout<<”Insert Failure”<<endl;9 A. w! m3 [: G. u" b  I  I
       }/ ~8 I& R1 T3 A
该会员没有填写今日想说内容.
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了