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

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

mildcat 楼主

2014-1-3 19:37:45

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

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

x
1.map的构造函数, }( n9 L1 J0 V) e! I1 l9 G: F. E
Map<int, string> mapStudent;
/ c! C% h" ?# [& A2. 数据的插入
# X2 s6 j1 e$ C( V  A4 Z  M' L' A" U在构造map容器后
! Z+ H1 N5 s9 T  {; M第一种:用insert函数插入pair数据% f1 @9 G* F; E1 D- s
#pragma warning (disable:4786) )4 a  j0 N+ j$ `" [! ?3 I
#include <map>
% _) B( v0 u$ ]+ L' C8 ^#include <string>
7 \1 E; j; {, d8 O7 q" w#include <iostream>: v/ Z2 N  _' e
Using namespace std;7 x  c! ~  o  Q. t- [) p
Int main()2 y' w- J4 [) g$ t7 j
{
- x; q  ~3 Y1 H. ^0 Y$ F5 f8 U       Map<int, string> mapStudent;
# Q$ }0 F2 x/ H8 d       mapStudent.insert(pair<int, string>(1, “student_one”));
6 E& f! O( l3 n  u. X; f" s) @! B       mapStudent.insert(pair<int, string>(2, “student_two”));
+ l( g1 i9 v# J, E$ D* N$ d- Q' ]       mapStudent.insert(pair<int, string>(3, “student_three”));
3 O! I% i, k  _2 s       map<int, string>::iterator iter;3 a5 l/ W, j2 b6 k
       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)2 E6 n$ h9 Y& O
{
  C3 m. ?# B7 n0 D: S       Cout<<iter->first<<”   ”<<iter->second<<end;' g- d0 u* T. [8 N8 q
}
0 O' a- z2 L5 z! G7 b% I}7 f8 |; p4 x+ e' a- N# r- o+ U3 T6 @
第二种:用insert函数插入value_type数据,下面举例说明
& Q4 b# Q  s2 e/ C#include <map>
5 H; ^5 |4 W) Q( V8 a#include <string>% {1 B0 V8 `7 l
#include <iostream>& m: S# s# ]6 N2 b6 A! Q% l' t
Using namespace std;
& O' b$ u. K$ W) |  o- ]; kInt main()
$ S0 S# A2 [( J{! J+ j6 z* o3 v$ e& v. T  o$ i
       Map<int, string> mapStudent;
& F* k- z4 T% M) @       mapStudent.insert(map<int, string>::value_type (1, “student_one”));
5 A5 [+ I# {, e       mapStudent.insert(map<int, string>::value_type (2, “student_two”));/ [  ]# G% K* F% X: W: |7 N5 r
       mapStudent.insert(map<int, string>::value_type (3, “student_three”));
5 E( v% j0 X( Z- Q  Y9 Q9 L3 U       map<int, string>::iterator iter;
( }( {% M& {- L0 ~       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)0 ^) {" w  e+ h6 V2 n9 U* F; I/ ?
{2 M" ~8 @- h$ f+ i  O; m
       Cout<<iter->first<<”   ”<<iter->second<<end;/ L5 p( c5 X" i0 o
}
5 F; Q, s8 I9 M}
% U  E$ `: g5 c' d+ L! W/ `& i第三种:用数组方式插入数据,下面举例说明
( @0 U9 G, S6 }#include <map>
$ o* i8 a6 F% S" q#include <string>
( Z, J; p) f* C$ X% G#include <iostream>/ D, p6 z7 V5 O) [& t1 _
Using namespace std;9 g3 ?  d" Q: F, _
Int main()$ z3 R, I5 R) m0 [: P  E* s0 n
{
- |% V2 C! Q4 T3 b; j       Map<int, string> mapStudent;0 s; L+ Y0 I: o( @) p: Z
       mapStudent[1] =  “student_one”;
% N1 Q1 T" F% \& g       mapStudent[2] = “student_two”;
% E7 i9 W& X& Z( b- H4 T2 e7 g       mapStudent[3] =  “student_three”;
& e! N; H. q: ~. T       map<int, string>::iterator iter;9 {& ^5 ~; Q. A& _
       for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)# r& B& r& L8 E$ c# u
{
1 @7 e% N6 E/ Z$ b       Cout<<iter->first<<”   ”<<iter->second<<end;& I" T2 e% ~8 p; F/ x
}: O5 x; m2 N- @
}# J3 \2 u4 H; `7 s
以上三种用法,虽然都可以实现数据的插入,但是它们是有区别的,当然了第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是插入数据不了的,但是用数组方式就不同了,它可以覆盖以前该关键字对应的值,用程序说明1 X, Q% N' T3 a& Z6 C' v  N' f
mapStudent.insert(map<int, string>::value_type (1, “student_one”));' ]: d$ `! |9 q0 y. }& @$ p& L% k
mapStudent.insert(map<int, string>::value_type (1, “student_two”));" N* Q4 w3 R  R, q& J5 P* H/ H+ n
上面这两条语句执行后,map中1这个关键字对应的值是“student_one”,第二条语句并没有生效,那么这就涉及到我们怎么知道insert语句是否插入成功的问题了,可以用pair来获得是否插入成功,程序如下
- s6 |. G7 \7 oPair<map<int, string>::iterator, bool> Insert_Pair;2 i3 A6 J% p4 H$ a- i
Insert_Pair = mapStudent.insert(map<int, string>::value_type (1, “student_one”));
6 W: G- ^; \1 r6 S! Q7 A我们通过pair的第二个变量来知道是否插入成功,它的第一个变量返回的是一个map的迭代器,如果插入成功的话Insert_Pair.second应该是true的,否则为false。3 r* R6 O/ [( E/ w7 o" D) T5 I
下面给出完成代码,演示插入成功与否问题
/ p$ M, S( k( U#include <map>+ y2 ^, `: P' H* d( {8 a
#include <string>
; D& A% ^# v+ i" N6 c: u+ a7 L#include <iostream>% u  x5 q! i) X
Using namespace std;5 \2 i6 q$ [# |1 L3 I% |% _4 ?
Int main()
; H% Y1 m4 o) i  a: z; Y' t, \/ ^5 p$ N{2 U9 K0 J0 x' o" d4 H' S: B' Z0 }4 s
       Map<int, string> mapStudent;# e$ h* O- x5 w! d
Pair<map<int, string>::iterator, bool> Insert_Pair;
. u/ y, A  C2 Y( j       Insert_Pair = mapStudent.insert(pair<int, string>(1, “student_one”));
. x) {, r  K& U9 T$ z* P       If(Insert_Pair.second == true)% _  p8 W3 S1 ?- p7 `
       {1 ^; N6 o5 o2 L3 H- f
              Cout<<”Insert Successfully”<<endl;
; t! m( I# o5 p       }2 c. f$ H" n, u" e& h6 J
       Else
2 }4 j- U" {4 _3 A  f( v6 a( n/ ?       {
1 h% S  M3 p+ r) s! k3 \              Cout<<”Insert Failure”<<endl;3 `7 @$ `* a$ j& N+ q  W$ w
       }* b# \; a6 ~7 V: X/ d
该会员没有填写今日想说内容.
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了