1.声明方式:
map<int, string>mapStudent;
map<string, int>mapStudent;
2.数据的插入;
第一种: 使用insert函数插入pair数据;
map<int, string>mapStudent;
mapstudent.insert(pair<int, string>(1, "student_one"));
第二种: 使用insert函数插入value_type数据
map<int, string>mapStudent;
mapstudent.insert(map<int, string>::value_type(1, "student_one"));
第三种:用数组方式插入数据
map<int, string>mapStudent;
mapStudent[1] = "student_one";
mapStudent[2] = "student_two";
以上三种方法,虽然都可以实现数据的插入,但是他们是有区别的,第一种和第二种在效果上是完全一样的,用Insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,及当map中有这个关键字时,insert操作是不能再插入这个数据的,但是用数组方式就不同了,它可以覆盖以前该关键字对应的值。
3.map的大小
size()函数;来检测插入多少数据。
4.数据的查找:
第一种:使用count函数来判定关键字是否出现,但是无法定位数据出现位置。
第二种:用find函数来定位数据出现的位置,它返回的一个迭代器,当数据出现时,他返回数据所在位置的迭代器,如果map中没有要查找的数据,他返回的迭代器等于end函数的迭代器。
第三种:这个方法用来判定数据是否出现
lower_bound()函数用来返回要查找关键字的下届(是一个迭代器)
upper_bound()函数用来返回要查找关键字的上届(是一个迭代器)
equal_range()函数用来返回一个pair,pair里面第一个变量是lower_bound返回的迭代器,
第二个变量是upper_bound返回的迭代器,如果这两个迭代器相同的话,则说明map中不
出现这个关键字
mapPair = mapStudent.equal_range(2);
if(mapPair.first == mapPair.second){
cout << "Don't find" << endl;
}
5. 数据的清空与判定
清空map中的数据可以用clear()函数,判定map中是否有数据可以使用empty()函数,他返回true则说明是空。
6.数据的删除
这里使用erase函数,他有三个重载了的函数。迭代器删除
iter = mapStudent.find(1);
mapStudent.erase(iter);
用关键字删除
int n = mapStudent.erase(1); //如果删除返回1, 否则为0;
用迭代器,成片的删除
一个代码把整个map清空
mapStudent(mapStrdent.begin(), mapStudent.end()); //删除区间是一个左闭右开区间。
7.其他一些函数
swap, key_comp, value_comp, get_allocator.