|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
1.map的构造函数
+ N( Z' W9 ^ R TMap<int, string> mapStudent;
7 W, s6 ~8 d5 N5 d# [ P2. 数据的插入( ~: B5 R# O1 k* \6 ]
在构造map容器后# L2 I5 j8 V' F/ T
第一种:用insert函数插入pair数据0 H+ D7 d* n0 J- ?! y% q( Q
#pragma warning (disable:4786) )
1 w8 G2 X/ \) ?#include <map>, z' b6 M$ G$ g) w
#include <string>
& b. n+ {* r% L" a#include <iostream> X9 J+ T2 }4 Q- W' h
Using namespace std;7 S4 f+ U& [% A6 j/ {
Int main()
3 p' @* d+ U* o{
3 P( d" k1 N" D; n9 |5 } Map<int, string> mapStudent;
/ [1 T. Z4 S" d" M+ g: L- W9 O mapStudent.insert(pair<int, string>(1, “student_one”));/ Z7 [' W R7 g1 i4 S
mapStudent.insert(pair<int, string>(2, “student_two”));1 G b! t3 X) y% z( \
mapStudent.insert(pair<int, string>(3, “student_three”));
* _, F; n+ B d$ t0 J' f) q7 @4 k1 ~ map<int, string>::iterator iter;% Y5 B. C3 t3 Y7 f9 I% `' d2 s
for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)1 |: w" C6 Y9 q! m) |
{* @2 m4 e# X2 i/ l, D% Y1 i
Cout<<iter->first<<” ”<<iter->second<<end;1 X) B5 t8 F- r9 L9 }: v
}6 m1 \3 H6 W9 G/ X$ F1 [3 k
}3 a- }: M4 y A J# k( ^5 b# t
第二种:用insert函数插入value_type数据,下面举例说明, r2 G) I8 ~% E5 Y# m
#include <map>
( E2 i z* M; M- Y K#include <string>) M, o$ m2 ?4 A0 u& z4 G# Q
#include <iostream>3 ~# g+ v" e: J) Y: p
Using namespace std;4 c7 s- ]7 a. N# T" O. w# g
Int main()
- L& s8 E+ r7 y8 i# `{
P6 s( k! S6 L& Q$ n8 Y) r Map<int, string> mapStudent;
6 J3 Y R5 j- F/ Z" ^" T mapStudent.insert(map<int, string>::value_type (1, “student_one”));' n) Z; P& |/ _" ], E2 i* E' r
mapStudent.insert(map<int, string>::value_type (2, “student_two”));
\+ z; L: L" A& p mapStudent.insert(map<int, string>::value_type (3, “student_three”));5 i# R" U/ i5 @5 r
map<int, string>::iterator iter;
+ Q. d. g5 Z+ N for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
6 a3 r8 \, g, Y1 X$ X7 I3 w{
" N) A. g7 J0 x Cout<<iter->first<<” ”<<iter->second<<end;/ v6 T+ b$ b% ^, I/ U
}
/ Z' H' l! b: q! o' v}8 s9 I# Y* o6 \4 r
第三种:用数组方式插入数据,下面举例说明
# k) X, S n! R/ D- j; ^$ N#include <map>
5 R9 ^7 z2 }8 n! v/ m5 ? h Q! u% q#include <string>/ I; I1 K& ?7 p, n8 t: X0 {6 p! F
#include <iostream>
5 O$ {' g8 O( k# g& HUsing namespace std;2 L0 }/ ?9 C: v5 b2 h3 y
Int main()7 M1 x+ G8 ?% e- M8 h4 b; G/ v. L
{
# [0 ?& p1 `4 i Map<int, string> mapStudent;) G$ q0 A8 s9 u- |6 Y, \
mapStudent[1] = “student_one”;! c- m1 a0 s. W% F
mapStudent[2] = “student_two”;6 l, O0 _# }6 R# _' j1 d
mapStudent[3] = “student_three”;
% i/ A+ `9 U' ~2 q map<int, string>::iterator iter;
/ _! L" q' \9 R for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
$ Z0 S) w) S( a' O; u{* i+ A' g" o0 ]* M2 l8 d; U
Cout<<iter->first<<” ”<<iter->second<<end;0 ^8 v. c1 v$ ]/ J
}
/ _2 a# R; h6 |% R( u}
5 Q+ Z' F$ X0 |! R% [3 a. p以上三种用法,虽然都可以实现数据的插入,但是它们是有区别的,当然了第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是插入数据不了的,但是用数组方式就不同了,它可以覆盖以前该关键字对应的值,用程序说明1 C' R+ f7 [, }& v# ]4 g
mapStudent.insert(map<int, string>::value_type (1, “student_one”));
4 E. K' s- c4 t( ?: g, z% BmapStudent.insert(map<int, string>::value_type (1, “student_two”));0 S: O. n" p I' N4 h5 t
上面这两条语句执行后,map中1这个关键字对应的值是“student_one”,第二条语句并没有生效,那么这就涉及到我们怎么知道insert语句是否插入成功的问题了,可以用pair来获得是否插入成功,程序如下
3 o" n1 |+ f/ {7 p aPair<map<int, string>::iterator, bool> Insert_Pair;9 q7 P4 d+ L3 {* ]* T3 k
Insert_Pair = mapStudent.insert(map<int, string>::value_type (1, “student_one”));' i) R* k1 H! h5 ?1 y) W2 n. S$ I
我们通过pair的第二个变量来知道是否插入成功,它的第一个变量返回的是一个map的迭代器,如果插入成功的话Insert_Pair.second应该是true的,否则为false。
: O- I# t" j4 E" R/ Q4 y- z下面给出完成代码,演示插入成功与否问题, S G) u' V( F" Z' ?$ [
#include <map>0 }5 V+ _8 A, l
#include <string>( p: h" j" s/ J+ _
#include <iostream>0 M8 i0 ]9 s& U( |+ R. [2 {0 a/ |* w
Using namespace std;8 J4 H/ c& z# v5 B% v# E+ Q
Int main()
! L" b0 n1 H5 ~: S# D$ }{9 a2 Z/ O% I, J1 n1 Q( B
Map<int, string> mapStudent;! G5 _+ m; t5 m0 T
Pair<map<int, string>::iterator, bool> Insert_Pair;$ E# f5 X6 W* b+ E) ^$ H
Insert_Pair = mapStudent.insert(pair<int, string>(1, “student_one”));7 ^% i8 ]; L, O3 }5 A2 \
If(Insert_Pair.second == true) L% @# ^- E4 v' Z6 G( E' \
{
; O0 e0 J2 F) V Cout<<”Insert Successfully”<<endl;
. e: g) M# X# B& W, w/ j; v }2 T( ?8 Z, {" ]* F" E t" [* Q4 n
Else
5 b% F/ |# a$ i' Q6 m: z {
: o u; m7 ]+ n Cout<<”Insert Failure”<<endl;
5 ^- ?) n# Q7 M" y5 U# x }4 F$ B5 F, |# D7 ^6 M
|
|