PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

[转载电子书] C++ 中 map类的具体用法实例讲解

[复制链接]

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

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

mildcat 楼主

2014-1-3 19:37:45

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

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

x
1.map的构造函数
% D) ~& |3 `. m: _6 u- qMap<int, string> mapStudent;
& |6 p! i7 E- R3 r3 D! l7 |5 a2. 数据的插入
  \  k" L0 `% N9 s* R3 l在构造map容器后
# V& |( U9 k# c: C第一种:用insert函数插入pair数据, P9 w' o0 v6 O$ J& o% s, I/ J
#pragma warning (disable:4786) )+ I2 j- S6 x: l/ y
#include <map>& E0 ]' v% u  g
#include <string>
4 j  L5 F) h/ n1 ]# Y#include <iostream>: s2 u) b! Q" W* r( [
Using namespace std;
" X& r; [! q& ?" vInt main()6 q1 d" {( Y5 X- h1 g. w' U, \6 |( Y
{& S. I5 I; `& k) M6 e( R
       Map<int, string> mapStudent;
" ]: @# O$ e9 }. F       mapStudent.insert(pair<int, string>(1, “student_one”));4 q0 F3 \) D/ ]/ s; W" C& N1 ^
       mapStudent.insert(pair<int, string>(2, “student_two”));
* j% z# t$ N: o. t: V       mapStudent.insert(pair<int, string>(3, “student_three”));
! ~9 @1 P1 r5 T6 J       map<int, string>::iterator iter;. \( f/ M- O0 B9 H9 S) f
       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)- M2 f9 `- D: ?4 U; }
{, S, c. f3 R6 }# ~4 C) B1 s
       Cout<<iter->first<<”   ”<<iter->second<<end;6 Y+ a* W% x  B5 m6 e! o
}8 c- \2 }+ d" T% k6 ?. U
}/ Z5 e8 E4 V+ B1 ?* r
第二种:用insert函数插入value_type数据,下面举例说明3 b: {+ _) I+ U  v3 R
#include <map>3 ~; n/ _2 W( H9 }
#include <string>
9 x) h. s, g/ F( f& e( \#include <iostream>
5 ?! T. {( O  a/ CUsing namespace std;" H6 y' o* K- `/ D: k/ L: k/ C
Int main()  m8 t5 P; [) n5 ^$ c, z
{
9 R6 f  e: m' f  v4 U$ R       Map<int, string> mapStudent;
1 v' U  T2 b. t       mapStudent.insert(map<int, string>::value_type (1, “student_one”));
( @: h7 b6 @8 j       mapStudent.insert(map<int, string>::value_type (2, “student_two”));
: }' F' G6 K( C# `+ M0 U+ p; P       mapStudent.insert(map<int, string>::value_type (3, “student_three”));# @5 Y6 T; J$ r4 S3 C# s% Q3 N
       map<int, string>::iterator iter;0 ?  W& K# g  N* v: g  s
       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)) ?9 ~9 }3 P, u; a
{1 W4 s- H; I/ ~
       Cout<<iter->first<<”   ”<<iter->second<<end;
  R4 i$ H$ g. B, l1 X: D. N}' f9 k' w$ [, S0 {. I
}& ?3 U& ?/ h1 ^
第三种:用数组方式插入数据,下面举例说明3 N" ]5 {, d- S6 u
#include <map>8 ?& r! N9 i* \/ a" i
#include <string>, h8 I% n" N% K6 j
#include <iostream>& V" ~  D1 q* p" y
Using namespace std;
# G+ b5 J# |/ d6 X( E9 {; VInt main()
4 i% h1 g/ n" N! {, `{
0 G- v; A8 s+ f) e8 k; @3 c# n; ]       Map<int, string> mapStudent;4 s' k' v. j8 v4 l4 r; Y
       mapStudent[1] =  “student_one”;
2 H: x5 w8 U& F* w/ R! }& x- K* x       mapStudent[2] = “student_two”;
1 S7 v) a/ ]1 Z1 s% |( X- l; {       mapStudent[3] =  “student_three”;
8 n4 H1 F0 H5 C9 T, T; W       map<int, string>::iterator iter;9 _$ Z* w6 Y) x+ r' B; F
       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)% P4 A4 _# `" m! ^9 m
{
, n9 p7 {* L9 C* B& K2 T. A       Cout<<iter->first<<”   ”<<iter->second<<end;
+ E+ E9 v: q5 r% s: Q1 m3 g}
2 ^: p( ?4 A/ _" s& |}$ Q+ A, E1 ^: h- l: F2 Q" |. W
以上三种用法,虽然都可以实现数据的插入,但是它们是有区别的,当然了第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是插入数据不了的,但是用数组方式就不同了,它可以覆盖以前该关键字对应的值,用程序说明7 R: C+ \( e* z' n4 C( Y
mapStudent.insert(map<int, string>::value_type (1, “student_one”));, r( G2 M- z  I' ~1 t* o
mapStudent.insert(map<int, string>::value_type (1, “student_two”));3 S( w) X$ c4 c, }- v* U* y: e
上面这两条语句执行后,map中1这个关键字对应的值是“student_one”,第二条语句并没有生效,那么这就涉及到我们怎么知道insert语句是否插入成功的问题了,可以用pair来获得是否插入成功,程序如下/ o' Z+ ?  i9 E" O( z0 t7 U/ w$ ]
Pair<map<int, string>::iterator, bool> Insert_Pair;
1 X: o" Y+ P" H, r' _' }Insert_Pair = mapStudent.insert(map<int, string>::value_type (1, “student_one”));0 Q( `5 K* O& Y5 x3 d8 h
我们通过pair的第二个变量来知道是否插入成功,它的第一个变量返回的是一个map的迭代器,如果插入成功的话Insert_Pair.second应该是true的,否则为false。6 p5 ^8 D0 @3 t8 T
下面给出完成代码,演示插入成功与否问题
: h# L0 [0 C  V% J% A#include <map>. }' `: A$ Z* w0 ?; t9 r
#include <string>' `( K$ I9 f+ ]2 h- b; v4 R
#include <iostream>
1 ~8 u  _% f! k1 MUsing namespace std;, ^6 ]; o2 S# z6 f+ g
Int main()
1 A0 a" T/ ?8 B) I, l" p4 K{! W* L7 W0 |! u) o' D# M4 g
       Map<int, string> mapStudent;/ b% X4 x* f! W: w/ J) q; s5 }( C
Pair<map<int, string>::iterator, bool> Insert_Pair;( h) _8 ^( G$ q: N( z0 N- Q* e
       Insert_Pair = mapStudent.insert(pair<int, string>(1, “student_one”));
4 l2 ]+ u* c; J" s) l1 e/ `: E% ^       If(Insert_Pair.second == true)
/ y6 {( O' X& h! A3 @       {
' i/ i0 @, S& O0 T              Cout<<”Insert Successfully”<<endl;* {- z9 L. g; c3 G- }0 S
       }
7 @, _" {; k4 [  q  x3 W  h/ F       Else) g7 y8 q: g- y7 s' k) g+ D. {2 P
       {
8 B" \1 {; i  @' j              Cout<<”Insert Failure”<<endl;
4 v9 s' F4 n7 ~% F# o( {       }
! t% A% ?6 L" M& H! a" F) M" s
该会员没有填写今日想说内容.
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了