本文部分内容来自https://www.cnblogs.com/hailexuexi/archive/2012/04/10/2440209.html
1.简介
map是一类关联式容器。使用它之前需要包含头文件:<map>。map可以自动建立Key - value的对应。key 和 value可以是任意你需要的类型。例如:
std:map<int, string> mymap;
这样就定义了一个用int作为索引的map,并拥有相关联的指向string的指针.。
它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。而用map进行查找的复杂度为Log(N)。
2.具体使用
. (1) map添加数据:
添加数据一共有三种方法:
map<int ,string> maplive;
1.maplive.insert(pair<int,string>(102,"aclive"));
2.maplive.insert(map<int,string>::value_type(321,"hai"));
3, maplive[112]="April";//map中最简单最常用的插入添加!
三种方法有一定的区别,当前两种方法用insert()函数插入数据时,如果map中已经有这个关键字了, 则无法插入。而如果用最后一种方式即数组方式插入数据,则可以覆盖以前该关键字对应的值。
(2)map中元素的查找:
find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。
map<int ,string >::iterator it;
it=maplive.find(112);
if(it==maplive.end())//没有找到
...
else //找到了key为112的元素
...
(3)map中元素的删除:
删除key为112的元素;
map<int ,string >::iterator it;;
it=maplive.find(112);
if(l_it==maplive.end())//没有找到
cout<<"we do not find 112"<<endl;
else maplive.erase(it); //删除112;
(4)map中的swap:
Map中的swap不是一个容器中的元素交换,而是两个容器交换;
示例:
#include <iostream>
#include <map>
int main ()
{
std::map<char,int> foo,bar;
foo['x']=100;
foo['y']=200;
bar['a']=11;
bar['b']=22;
bar['c']=33;
swap(foo,bar);
std::cout << "foo contains:\n";
for (std::map<char,int>::iterator it=foo.begin(); it!=foo.end(); ++it)
std::cout << it->first << " => " << it->second << '\n';
std::cout << "bar contains:\n";
for (std::map<char,int>::iterator it=bar.begin(); it!=bar.end(); ++it)
std::cout << it->first << " => " << it->second << '\n';
return 0;
}
输出:
foo contains:
a => 11
b => 22
c => 33
bar contains:
x => 100
y => 200
(5)map的sort问题:
Map中的元素是自动按key升序排序,所以不能对map用sort函数。
3.map的基本操作函数
begin() 返回指向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的函数