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 4303 0

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

mildcat 楼主

2014-1-3 19:37:45

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

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

x
1.map的构造函数) O* }  k2 Y* R  z! I7 g5 H5 R1 B
Map<int, string> mapStudent;7 T* Y. S. G3 g6 \: P
2. 数据的插入
% j2 O4 b( i/ Q. U在构造map容器后
0 v7 g+ M0 A6 p( o. [" M: Y5 q第一种:用insert函数插入pair数据
7 m- |1 ^! h/ s% e, O4 J#pragma warning (disable:4786) )# l; F, f+ x! A% w- J
#include <map>9 g& Y; a4 N, a: O1 g
#include <string>
, ~1 P8 L' z6 |$ ~+ v$ ~6 g4 w#include <iostream>5 o7 S2 ?; u7 e( M) S
Using namespace std;
4 b$ O' K  J0 j, p7 U; r/ OInt main()
- H: y6 k2 l( O7 y( I6 z{. x7 _% d! h4 Q: ^$ w" T6 ^9 \) u; u  H! S
       Map<int, string> mapStudent;
9 B8 O9 U. c$ D( U1 P4 f       mapStudent.insert(pair<int, string>(1, “student_one”));
5 B! O6 f0 u5 t- _       mapStudent.insert(pair<int, string>(2, “student_two”));
  Y$ Y/ n/ _7 f4 @# S       mapStudent.insert(pair<int, string>(3, “student_three”));
2 p! A% [: F2 `  o# M; {       map<int, string>::iterator iter;' ~6 C2 }) E) G" ?
       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++): b4 t. Y# |/ r$ U0 K
{3 b% }( r8 k) V& D
       Cout<<iter->first<<”   ”<<iter->second<<end;: g6 p5 F, {. y( |/ y5 M& Q- M+ b4 _
}2 c0 b, }- B& K$ Z- W
}
; Q7 s/ {" z$ I4 r/ J% E4 D: r第二种:用insert函数插入value_type数据,下面举例说明
0 l6 _  k. F% s; h#include <map>% V) q) X3 ^0 O8 X) r1 j  |: t
#include <string>
0 @, e; f" e3 d#include <iostream>
" I  ~/ \7 ^" _! Y& n8 _( EUsing namespace std;, t2 X) T% O- u
Int main()
% U" D2 T3 o& s  Y{
$ W0 `; O& r! n7 K% f3 x" B       Map<int, string> mapStudent;
- l# l3 J0 z' t) B8 E2 d* q       mapStudent.insert(map<int, string>::value_type (1, “student_one”));' {. ?9 p/ C  z: d. o/ C
       mapStudent.insert(map<int, string>::value_type (2, “student_two”));
2 J! R' O7 @" A# H) P& v7 a       mapStudent.insert(map<int, string>::value_type (3, “student_three”));/ O4 S& m/ p' w: _2 `5 ?
       map<int, string>::iterator iter;; M/ R! y0 V; Z$ F( I
       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
( i, R, o5 X3 F, E6 i{$ r3 D$ p$ {: m- c
       Cout<<iter->first<<”   ”<<iter->second<<end;
" ], w  ^& D$ B! J! @5 j}$ P( J! j$ \" D7 d; i9 D  X
}
% ^7 ?, x8 w+ B第三种:用数组方式插入数据,下面举例说明
$ p' @  x. {: d9 {3 X8 p#include <map>
# p; {: r* d7 {- O#include <string>: V( V3 \2 @0 c/ a- W' ]
#include <iostream>
) J9 L/ A; H/ s5 j2 A3 w  AUsing namespace std;1 A8 U+ X% Q( Z# C# S% E3 \
Int main(), h) B) B4 N, ~: l
{
: U, @0 u" j1 H6 c4 ~       Map<int, string> mapStudent;2 d" R- }9 y8 J, d5 c' Z+ u
       mapStudent[1] =  “student_one”;) D* b' N4 r9 c( P2 @8 D
       mapStudent[2] = “student_two”;
5 ~/ R5 H% @- e6 d       mapStudent[3] =  “student_three”;
+ r: q  D# A" _* T4 m0 P       map<int, string>::iterator iter;
$ S; y" e# }7 b( @8 [- w- @- A( W       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)- R6 H* `# C) }" s& o1 Q
{2 J6 n8 V. A/ N2 J
       Cout<<iter->first<<”   ”<<iter->second<<end;
$ @+ v9 u9 _3 e}1 C9 `) `6 m8 e+ c! [
}2 [5 Q+ U; M) u+ b+ g, e
以上三种用法,虽然都可以实现数据的插入,但是它们是有区别的,当然了第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是插入数据不了的,但是用数组方式就不同了,它可以覆盖以前该关键字对应的值,用程序说明2 a! k8 _" z0 U$ A  d
mapStudent.insert(map<int, string>::value_type (1, “student_one”));5 l- L7 N- f6 |+ j' ^/ x
mapStudent.insert(map<int, string>::value_type (1, “student_two”));$ c3 g2 X7 t  m
上面这两条语句执行后,map中1这个关键字对应的值是“student_one”,第二条语句并没有生效,那么这就涉及到我们怎么知道insert语句是否插入成功的问题了,可以用pair来获得是否插入成功,程序如下8 m- w* |  V1 w+ p$ V% J
Pair<map<int, string>::iterator, bool> Insert_Pair;# K# A) o$ O/ E4 {
Insert_Pair = mapStudent.insert(map<int, string>::value_type (1, “student_one”));, z3 }$ W7 S1 A% c1 C. ?  K
我们通过pair的第二个变量来知道是否插入成功,它的第一个变量返回的是一个map的迭代器,如果插入成功的话Insert_Pair.second应该是true的,否则为false。
5 q' `1 A& ?8 [* S下面给出完成代码,演示插入成功与否问题" B( P  l+ `6 J+ t# {. ?" g
#include <map>1 C5 l/ M" |7 i& {; v! k
#include <string>7 s4 X% T1 f0 N8 R/ V
#include <iostream>
! [( D( {) M1 @& P9 m" R5 @0 S7 u3 GUsing namespace std;
$ y8 H9 h6 r5 ?/ e4 L/ P8 X0 _Int main()5 c' M7 g4 J9 ]
{
7 j" M+ w8 D/ h- Z       Map<int, string> mapStudent;
6 M8 w; k) Q3 j% YPair<map<int, string>::iterator, bool> Insert_Pair;; H7 e$ H" Z0 Z" g. s2 Y2 a" x
       Insert_Pair = mapStudent.insert(pair<int, string>(1, “student_one”));
! f) D. [; W! \  a( X       If(Insert_Pair.second == true)
, g  L( d( w5 P0 u       {
- d, ^. j1 V6 U6 B9 l" x+ t& a              Cout<<”Insert Successfully”<<endl;
; s9 @0 e, F9 N7 g, G+ ^" L       }0 ]6 K6 u3 `  W
       Else* v  g6 w: F( d; g4 S
       {- S2 J. r9 N" e* I6 u8 N7 J
              Cout<<”Insert Failure”<<endl;
1 v* k: ~  S7 b( y' @+ R       }2 M1 |2 ^- x) P% G' Y9 o& q
该会员没有填写今日想说内容.
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了