需要分别包含头文件
#includemap/unordered_map是一个关联容器,它按照特定顺序存储由键值和映射值的组合形成的元素;
在映射中,键值通常用于排序和唯一标识元素,而映射值存储与此键关联的内容。键和映射值的类型可能不同,并在成员类型value_type中组合在一起,这是一种结合两者的对类型:
typedef pair value_type;
map容器通常比unordered_map容器慢,以便通过键访问单个元素,但它们允许根据子集的顺序直接迭代子集。 在该映射值地图可以直接通过使用其相应的键来访问括号运算符((操作符[] )。 映射通常如实施二叉搜索树。
key:每个元素都由其键值唯一标识。
T:这个键对应的值
和python中的字典差不多意思。
std::map m;
std::unordered_map u_m;
std::map m({{'key1',1},{'key2',2}});
std::unordered_map u_m({{'key1',1},{'key2',2}});
也可以先定义完再赋值
用操作符[]访问,如:m[‘key1’];访问的得到的是key1对应的value。
用insert插入:
//第一种
m.insert ( std::pair('akali',100) );
u_m.insert ( std::pair('ez',200) );
//第二种
std::map::iterator it1 = m.begin();
std::map::iterator it2 = u_m.begin();
m.insert (it1, std::pair('bobi',300));
u_m.insert (it2, std::pair('karsa',400));
//第三种
std::map anothermap;
anothermap.insert(m.begin(),m.find('akali'));
还可以直接赋值进去:
m['aruma']=1;
u_m['qiqi']=38;
m.max_size()//返回容器可以作为内容保存 的最大元素数。
m.size()//返回容器中的元素数量。
m.empty()//返回bool值,判断是否为空。
begin():容器中第一个元素的迭代器。如果map对象是const限定的,则该函数返回一个const_iterator。否则,它返回一个迭代器。迭代器是一种泛型指针。可以用这个迭代器来访问对象的键和值。
m.begin()//
m.end()//这个end()返回的是最后一个元素的下一个地址
可以用这些迭代器来遍历整个map对象:
map m;
map::iterator it;
it = m.begin();
while(it != m.end())
{
it->first;//访问键
it->second;//访问值
it ++; //
}
find(find_key):如果找到具有指定键的元素,则为元素的迭代器,否则为map :: end。就是说如果这个map里含有find_key这个键的话就返回它对应的迭代器,否则返回end();这个可以用来判断这个值是否存在于其中。
std::map m({{'key1',1},{'key2',2}});
if(m.find('key1')==m.end()){
std::cout<<"不存在"< find_if:它不是map中的方法,根据指定的pred运算条件(以仿函数表示),循环查找[first,last)内的所有元素,找出第一个令pred运算结果true者。如果找到就返回一个InputIterator指向该元素,否则就返回迭代器last。
#include从地图容器中移除单个元素或一系列元素([first,last))。这有效地减少了容器的大小,删除了被删除的元素数量。该函数返回已擦除的元素数。
it=m.find('b');
m.erase (it); // erasing by iterator
m.erase ('c'); // erasing by key
it=m.find ('e');
m.erase ( it, m.end() ); // erasing by range//左闭右开
交换两个同类型容器的内容,尺寸可以不同。
#include
#include 删除所有元素,使容器的大小为0。
// map::clear
#include
#include 计数,但是map中本身key就是唯一的,所以包含这返回1,不包含则返回0。
// map::count
#include
#include map: map内部实现了一个红黑树,该结构具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素,因此,对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行这样的操作,故红黑树的效率决定了map的效率。
unordered_map: unordered_map内部实现了一个哈希表,因此其元素的排列顺序是杂乱的,无序的
上面那些方法都是一样的用法。