一、map的概念
map是 关键字-值 对的集合,通常被称为关联数组。map与数组很相似,对于数组来说,一个下标对应的就是一个值,map是一个键对应一个值,而这个键不需要为数字类型,甚至map的键还可以为一个map,当然其对应的值也可以为map,就像
map<map<int, string>, map<string, int>> mapStrAndInt;
二、map的操作
| 返回指向map头部的迭代器 |
clear() | 删除所有元素 |
count() | 返回指定元素出现的次数 |
empty() | 如果map为空则返回true |
end() | 返回指向map末尾的迭代器 |
equal_range() | 返回特殊条目的迭代器对 |
erase() | 删除一个元素 |
find() | 查找一个元素 |
get_allocator() | 返回map的配置器 |
insert() | 插入元素 |
key_comp() | 返回比较元素key的函数 |
lower_bound() | 返回键值>=给定元素的第一个位置 |
max_size() | 返回可以容纳的最大元素个数 |
rbegin() | 返回一个指向map尾部的逆向迭代器 |
rend() | 返回一个指向map头部的逆向迭代器 |
size() | 返回map中元素的个数 |
swap() | 交换两个map |
upper_bound() | 返回键值>给定元素的第一个位置 |
value_comp() | 返回比较元素value的函数 |
三、具体使用代码示例
#include "stdafx.h"
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
// 定义一个map
map<int, string> mapIntToStr;
//map的插入
mapIntToStr.insert(pair<int, string>(1, "string_one"));
mapIntToStr.insert(pair<int, string>(2, "string_two"));
mapIntToStr.insert(pair<int, string>(3, "string_three"));
mapIntToStr.insert(map<int, string>::value_type(4, "string_fpur"));
mapIntToStr.insert(map<int, string>::value_type(5, "string_five"));
mapIntToStr.insert(map<int, string>::value_type(6, "string_six"));
// 下面的插入是通过下标插入值,但这种情况会对已赋了值的键值对覆盖
// 例如下面就会将1、2、3的位置的值修改,所以我个人不是很喜欢用
//mapIntToStr[1] = "student_one";
//mapIntToStr[2] = "student_two";
//mapIntToStr[3] = "student_three";
//map的遍历
// 1迭代器
map<int, string>::iterator iter;
for (iter = mapIntToStr.begin(); iter != mapIntToStr.end(); iter++)
{
cout << iter->first << ' ' << iter->second << endl;
}
cout << "我是一道快乐的分割线********************" << endl;
// 2数组方式
for (int nindex = 1; nindex <= mapIntToStr.size(); nindex++)
{
cout << mapIntToStr[nindex] << endl;
}
system("pause");
}