教你使用STL容器之map

map是一种容器,用来存储若干元素这些元素都是键值对(key_value)组成。在一个map中,key值通常用来排序或特指元素,映射值用来存储于该key值绑定的内容。key与value类型可以不同。map中的映射值可以用[ ]来直接访问,底层是用二叉搜索树中的红黑树实现的。

在map内部的元素通常按照其key值排序,且排序方式是根据某种明确、严格的弱排序标准进行的,这种排序标准是由map内部的比较对象(仿函数)指定的。map通过key值访问元素的速度,一般较unordered_map慢,但map容器允许基于它们的顺序对子集进行直接迭代。

map的特性

* 关联性
* 有序性
* 映射
* 唯一key值

1.包含头文件

#include <map>

2.map声明及初始化

struct Comp{
     bool operator()(const char& a, const char& b){
          return a < b;
     }
};
void ListTest()
{
     map<char, int> first;
     first['a'] = 10;
     first['b'] = 20;
     first['c'] = 30;
     map<char, int> second(first.begin(), first.end());
     map<char, int> third(first);
     map<char, int, Comp> fourth;
     fourth['g'] = 9;
     fourth['t'] = 0;
     fourth['a'] = 6;
     map<char, int>fifth;
     fifth = first;//重载了等号
}

监视窗口查看结果。
这里写图片描述

3.map的基本使用

(1)容量(Capacity)

m.empty();//判断map是否为空
m.size();//map中元素个数
m.max_size();//map中可以容纳的最大元素个数

(2)修改(Modifiers)

m.insert();//插入元素
m.erase();//删除元素
m.swap();//交换两个map
m.clear();//清空map

对一些重要的函数使用进行介绍。

insert

insert函数原型:

pair<iterator,bool> insert ( const value_type& x );//直接插入元素
iterator insert ( iterator position, const value_type& x );//指定位置插入
template <class InputIterator>
void insert ( InputIterator first, InputIterator last );//插入指定区间

例子:

void ListTest()
{
     map<char, int> m1;
     map<char, int>::iterator it;
     it = m1.begin();
     m1.insert(pair<char,int>('a', 1));
     m1.insert(it, pair<char, int>('b', 2));
     map<char, int> m2;
     m2.insert(m1.begin(), m1.end());
}

监视窗口查看结果。
这里写图片描述

erase

erase参数原型:

void erase ( iterator position );
size_type erase ( const key_type& x );
void erase ( iterator first, iterator last );

(3)迭代器(Iterators)

m.begin();//开始指针
m.end();//末尾指针
m.rbegin();//反向迭代器的开始指针
m.rend();//反向迭代器的末尾指针

(4)元素访问(Element access)

operator[]

(5)算法(Operations)

m.find(data);//查找元素
m.count();//元素个数
m.lower_bound();//返回key值<给定元素的第一个位置
m.upper_bound();//返回key值>给定元素的第一个位置
m.equal_range();//返回特殊条目的迭代器对

(6)Observers

m.key_comp();//返回比较元素key的函数
m.value_comp();//返回比较元素value的函数

(7)配置器

get_allocator();//返回map的配置器

查看帮助文档进一步学习
set和map的接口是一样的,只不过set中的key即是value,value即是key。

猜你喜欢

转载自blog.csdn.net/ZWE7616175/article/details/81634392