C++ STL之map

 官方文档:map 类 | Microsoft Docs

简介:

map

用于存储和检索集合中的数据,此集合中的每个元素均为包含数据值和排序键的元素对。 键的值是唯一的,用于自动排序数据。

可以直接更改映射中的元素值。 键值是常量,无法更改。 必须先删除与旧元素关联的键值,才能为新元素插入新键值。

特点:

C++ 标准库 map 类为:

  • 大小可变的关联容器,基于关联键值高效检索元素值。

  • 可逆,因为它提供双向迭代器来访问其元素。

  • 有序,因为它的元素根据指定的比较函数按键值排序。

  • 唯一。 因为它的每个元素必须具有唯一键。

  • 关联容器对,因为它的元素数据值与其键值不同。

  • 类模板,因为它提供的功能是泛型的,独立于元素或键类型。 用于元素和键的数据类型作为类模板以及比较函数和分配器中的参数指定。

1、头文件

#include<map>

2、常用方法

#include<map>

int main(){
    //声明
    map<int, int> m1;
    map<int, int>::size_type i;
    typedef pair<int, int> Int_Pair;
    
    //插入:方法
    m1.insert(Int_Pair(1, 1));
    m1.insert(pair<int, int>(2,2));
    //插入:数组
    m1[3] = 3;
    
    //迭代器访问
    map<int, int>::iterator it = m1.begin();
    for( ; it != m1.end(); it++) {
        cout << it->first << " ";
        cout << it->second << endl;
    }

    //数组访问 m1[key]; 
     //当key不存在,访问仍成功,用该key构造键值对,取value对象默认构造值,string为构造为空串,int为0
    cout << m1[3] << endl;

    //删除erase(key),c成功返回1,否则返回0
    m1.erase(1);    
    it = m1.begin();
    for( ; it != m1.end(); it++) {
    cout << it->first << " ";
    cout << it->second << endl;
    }

    //查找 找到返回迭代器,失败返回 m1.end()
    cout << m1.find(2)->second << endl;

    //用迭代器,成片的删除
    m1.erase( m1.begin(), m1.end() ); 
    //一下代码把整个map清空
    m1.clear();
    cout << m1.size()<<endl;

    //排序:map自动对key升序,value要排序请放到vector中
    
}


3、Typedef

名称说明
allocator_type映射对象的 allocator 类的 typedef。
const_iterator可读取 constmap 元素的双向迭代器的 typedef。
const_pointer指向映射中的 const 元素的指针的 typedef。
const_reference对映射中存储的元素的引用 const 的 typedef,用于读取和执行 const 操作。
const_reverse_iterator一种类型,此类型提供可读取 const 中的任何 map 元素的双向迭代器。
difference_type映射中迭代器指向的元素间范围内元素数量的有符号整数 typedef。
iterator可读取或修改映射中任何元素的双向迭代器的 typedef。
key_compare可比较两个排序键以确定 map 中两个元素的相对顺序的函数对象的 typedef。
key_type存储在映射内每个元素中的排序键的 typedef。
mapped_type存储在映射内每个元素中的数据的 typedef。
pointer指向映射中的 const 元素的指针的 typedef。
reference对映射中存储的元素的引用的 typedef。
reverse_iterator可读取或修改反向映射中的元素的双向迭代器的 typedef。
size_type映射中元素数量的无符号整数 typedef。
value_type作为元素存储在映射中的对象类型的 typedef。

4、成员函数

成员函数说明
at查找具有指定键值的元素。
begin返回一个迭代器,此迭代器指向 map 中的第一个元素。
cbegin返回指向中第一个元素的 map常数迭代器。
cend返回一个超过末尾常量迭代器。
clear清除 map 的所有元素。
containsC++20检查是否存在具有指定键的 map元素。
count返回映射中其键与参数中指定的键匹配的元素数量。
crbegin返回一个常数迭代器,该迭代器指向反向 map的第一个元素。
crend返回一个常数迭代器,该迭代器指向反向 map最后一个元素之后的位置。
emplace将构造的元素插入到该元素中 map
emplace_hint使用放置提示将构造的元素插入到该 map元素中。
empty如果为空,map则返回true
end返回超过末尾迭代器。
equal_range返回一对迭代器。 此迭代器对中的第一个迭代器指向 map 中其键大于指定键的第一个元素。 此迭代器对中的第二个迭代器指向 map 中其键等于或大于指定键的第一个元素。
erase从指定位置移除映射中的元素或元素范围。
find返回一个迭代器,该迭代器指向键等于指定键的元素的位置 map
get_allocator返回用于构造 allocatormap 对象的副本。
insert将一个或一系列元素插入到 map 中的指定位置。
key_comp返回用于对键进行排序的 map比较对象的副本。
lower_bound返回一个迭代器,该迭代器指向具有键值等于或大于指定键的值的第一个元素 map
max_size返回 map 的最大长度。
rbegin返回一个迭代器,此迭代器指向反向 map 中的第一个元素。
rend返回一个迭代器,该迭代器指向反向 map中最后一个元素之后的位置。
size返回 map 中的元素数量。
swap交换两个映射的元素。
upper_bound返回一个迭代器,该迭代器指向具有大于指定键的键值的第一个元素 map
value_comp检索用于对 map 中的元素值进行排序的比较对象副本。

5、运算符

名称说明
operator[]将元素插入到具有指定键值的映射。
operator=将一个映射中的元素替换为另一映射副本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值