天天看点

map以及类似指针iterator

1. map的构造函数

Map<int, string> mapStudent;

2. 数据的插入

在构造 map容器后

第一种:用insert函数插入pair数据

#pragma warning (disable:4786) )

#in clude < map>

#in clude <string>

#in clude <iostream>

Using namespa ce std;

Int main()

{

Map<int, string> mapStudent;

mapStudent.insert(pair<int, string>(1, “student_one”));

mapStudent.insert(pair<int, string>(2, “student_two”));

mapStudent.insert(pair<int, string>(3, “student_three”));

map<int, string>::iterator iter;

for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)

{

Cout<<iter->first<<” ”<<iter->se cond<<end;

}

}

第二种:用insert函数插入value_type数据,下面举例说明

#in clude < map>

#in clude <string>

#in clude <iostream>

Using namespa ce std;

Int main()

{

Map<int, string> mapStudent;

mapStudent.insert( map<int, string>::value_type (1, “student_one”));

mapStudent.insert( map<int, string>::value_type (2, “student_two”));

mapStudent.insert( map<int, string>::value_type (3, “student_three”));

map<int, string>::iterator iter;

for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)

{

Cout<<iter->first<<” ”<<iter->se cond<<end;

}

}

第三种:用数组方式插入数据,下面举例说明

#in clude < map>

#in clude <string>

#in clude <iostream>

Using namespa ce std;

Int main()

{

Map<int, string> mapStudent;

mapStudent[1] = “student_one”;

mapStudent[2] = “student_two”;

mapStudent[3] = “student_three”;

map<int, string>::iterator iter;

for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)

{

Cout<<iter->first<<” ”<<iter->se cond<<end;

}

}

以上三种用法,虽然都可以实现数据的插入,但是它们是有区别的,当然了第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当 map中有这个关键字时,insert操作是插入数据不了的,但是用数组方式就不同了,它可以覆盖以前该关键字对应的值,用程序说明

mapStudent.insert( map<int, string>::value_type (1, “student_one”));

mapStudent.insert( map<int, string>::value_type (1, “student_two”));

上面这两条语句执行后, map中1这个关键字对应的值是“student_one”,第二条语句并没有生效,那么这就涉及到我们怎么知道insert语句是否插入成功的问题了,可以用pair来获得是否插入成功,程序如下

Pair< map<int, string>::iterator, bool> Insert_Pair;

Insert_Pair = mapStudent.insert( map<int, string>::value_type (1, “student_one”));

我们通过pair的第二个变量来知道是否插入成功,它的第一个变量返回的是一个 map的迭代器,如果插入成功的话Insert_Pair.se cond应该是true的,否则为false。

下面给出完成代码,演示插入成功与否问题

#in clude < map>

#in clude <string>

#in clude <iostream>

Using namespa ce std;

Int main()

{

Map<int, string> mapStudent;

Pair< map<int, string>::iterator, bool> Insert_Pair;

Insert_Pair = mapStudent.insert(pair<int, string>(1, “student_one”));

If(Insert_Pair.se cond == true)

{

Cout<<”Insert Su ccessfully”<<endl;

}

Else

{

Cout<<”Insert Failure”<<endl;

}