C++11标准库(STL)使用总结——map

本文详细介绍了C++11标准库中的map容器,包括map的构造、迭代器begin、键值比较函数key_comp和value_comp、查找函数find、计数函数count、下界lower_bound、上界upper_bound以及等价范围equal_range。通过示例展示了每个函数的用法和输出结果。

map 是关联容器,按照特定顺序存储由 key value (键值) 和 mapped value (映射值) 组合形成的元素。

在映射中,键值通常用于对元素进行排序和唯一标识,而映射的值存储与此键关联的内容。该类型的键和映射的值可能不同,并且在部件类型被分组在一起VALUE_TYPE,这是一种对类型结合两种:

typedef pair<const Key, T> value_type;

在内部,映射中的元素总是按照由其内部比较对象(比较类型)指示的特定的严格弱排序标准按键排序。映射容器通常比unordered_map容器慢,以通过它们的键来访问各个元素,但是它们允许基于它们的顺序对子集进行直接迭代。 在该映射值地图可以直接通过使用其相应的键来访问括号运算符((操作符[] )。 映射通常如实施

template < class Key,                                     // map::key_type
           class T,                                       // map::mapped_type
           class Compare = less<Key>,                     // map::key_compare
           class Alloc = allocator<pair<const Key,T> >    // map::allocator_type
           > class map;
方法 含义
map 构造函数
~map 析构函数,销毁容器对象
begin 返回引用map容器中第一个元素的迭代器
key_comp 返回容器用于比较键的比较对象的副本
value_comp 返回可用于比较两个元素的比较对象,以获取第一个元素的键是否在第二个元素之前
find 在容器中搜索具有等于k的键的元素,如果找到则返回一个迭代器,否则返回map::end的迭代器
count 在容器中搜索具有等于k的键的元素,并返回匹配的数量
lower_bound 返回指向容器中第一个元素的迭代器,该元素的键不会在k之前出现
upper_bound 返回一个指向容器中第一个元素的迭代器,它的关键字被认为是在k之后
equal_range 返回包含容器中所有具有与k等价的键的元素的范围边界
1. map::map

构造一个映射容器对象,根据所使用的构造器版本初始化其内容:

(1)空容器构造函数(默认构造函数)

构造一个空的容器,没有元素。

(2)范围构造函数

构造具有一样多的元素的范围内的容器[第一,最后一个),其中每个元件布设构造的从在该范围内它的相应的元件。

(3)复制构造函数(并用分配器复制)

使用x中的每个元素的副本构造一个容器。

(4)移动构造函数(并与分配器一起移动)

构造一个获取x元素的容器。
如果指定了alloc并且与x的分配器不同,那么元素将被移动。否则,没有构建元素(他们的所有权直接转移)。
x保持未指定但有效的状态。

(5)初始化列表构造函数

用il中的每个元素的副本构造一个容器。

empty (1)	
explicit map (const key_compare& comp = key_compare(),
              const allocator_type& alloc = allocator_type());
explicit map (const allocator_type& alloc);
range (2)	
template <class InputIterator>
  map (InputIterator first, InputIterator last,
       const key_compare& comp = key_compare(),
       const allocator_type& = allocator_type());
copy (3)	
map (const map& x);
map (const map& x, const allocator_type& alloc);
move (4)	
map (map&& x);
map (map&& x, const allocator_type& alloc);
initializer list (5)	
map (initializer_list<value_type> il,
     const key_compare& comp = key_compare(),
     const allocator_type& alloc = allocator_type());

Example

#include <iostream>
#include <map>
bool fncomp (char lhs, char rhs) {
   
   return lhs<rhs;}
struct classcomp {
   
   
  bool operator() (const char& lhs, const char& rhs) const
  {
   
   return lhs<rhs;}
};
int main ()
{
   
   
  std::map<char,int> first;

  first['a']=10;
  first['b']=30;
  first['c']=50;
  first['d'
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值