|
请使用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 |
|