C++ STL Map

源文件

#include <iostream>
#include <string>
#include <map>
#include <utility>
#include <algorithm>

using namespace std;
/**
 * 前述:
 * 1.map存储的都是pair对象,键值各自可以是任何类型,通常大多数是string;
 * 2.map会默认或按指定规则排序;
 * 3.map中键的值被const修饰,既不能重复也不能修改;
 * 4.模版声明:
 * template < class Key,                                     // 指定键(key)的类型
           class T,                                       // 指定值(value)的类型
           class Compare = less<Key>,                     // 指定排序规则
           class Alloc = allocator<pair<const Key,T> >    // 指定分配器对象的类型
           > class map;
map 容器模板有 4 个参数,其中后 2 个参数都设有默认值。大多数场景中,我们只需要设定前 2 个参数的值,有些场景可能会用到第 3 个参数,
但最后一个参数几乎不会用到。
*/

/**
 * 基础1.创建map
*/
void createMap(){
    //way1
    map<string,string> m0 ;
    map<string,string> m1 {
  {"name","tony"},{"age","20"}};
    // map<string,string> m1 {make_pair("name","tony"),make_pair("age","20")};
    //way2
    map<string,string> m2(m1);
    // //way3 C++ 11
    // //创建一个会返回临时 map 对象的函数
    // map<string,int> disMap(){
    //     std::map<std::string, int>tempMap{ {"C语言教程",10},{"STL教程",20} };
    //     return tempMap;
    // }
    // //调用 map 类模板的移动构造函数创建 newMap 容器
    // std::map<std::string, int> m3(disMap());
    //way4
    map<string, int>m5{ {"C语言教程",10},{"STL教程",20} };
    map<string, int>newMap(++m5.begin(), m5.end());
    //way5 创建容器同时制定排序规则
    std::map<std::string, int> m4{ {"C语言教程",10},{"STL教程",20} };
    std::map<std::string, int, std::less<std::string> > m4a{ {"C语言教程",10},{"STL教程",20} };
    //修改排序规则
    std::map<std::string, int, std::greater<std::string> > m4b{ {"C语言教程",10},{"STL教程",20} };

}
/**
 * map成员方法:
 * 表 1 C++ map容器常用成员方法
成员方法	功能
begin()	返回指向容器中第一个(注意,是已排好序的第一个)键值对的双向迭代器。如果 map 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。
end()	返回指向容器最后一个元素(注意,是已排好序的最后一个)所在位置后一个位置的双向迭代器,通常和 begin() 结合使用。如果 map 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。
rbegin()	返回指向最后一个(注意,是已排好序的最后一个)元素的反向双向迭代器。如果 map 容器用 const 限定,则该方法返回的是 const 类型的反向双向迭代器。
rend()	返回指向第一个(注意,是已排好序的第一个)元素所在位置前一个位置的反向双向迭代器。如果 map 容器用 const 限定,则该方法返回的是 const 类型的反向双向迭代器。
cbegin()	和 begin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改容器内存储的键值对。
cend()	和 end() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改容器内存储的键值对。
crbegin()	和 rbegin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改容器内存储的键值对。
crend()	和 rend() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改容器内存储的键值对。
find(key)	在 map 容器中查找键为 key 的键值对,如果成功找到,则返回指向该键值对的双向迭代器;反之,则返回和 end() 方法一样的迭代器。另外,如果 map 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。
lower_bound(key)	返回一个指向当前 map 容器中第一个大于或等于 key 的键值对的双向迭代器。如果 map 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。
upper_bound(key)	返回一个指向当前 map 容器中第一个大于 key 的键值对的迭代器。如果 map 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。
equal_range(key)	该方法返回一个 pair 对象(包含 2 个双向迭代器),其中 pair.first 和 lower_bound() 方法的返回值等价,pair.secon
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值