STL—map(一)

简介: map是映射,我们在定义数组的时候int a[100];其实是一个int --> int的映射,

文章目录

一、什么是map

二、map的操作

1.map的定义

2.map内元素的访问

(1)通过下标访问

(2)通过迭代器访问

3.map中的函数

(1)find()

(2)erase()

删除单个元素

删除一个区间内的所有元素

(3)size()

(4)clear()


一、什么是map

map是映射,我们在定义数组的时候int a[100];其实是一个int --> int的映射,比如a[3] = 5的含义就是把3映射到5,一个double类型的数组就是一个int --> double的映射,这里我们就能知道我们数组的一个弊端,就是只能实现int --> typename的映射,如果我们要表示一个字典的话,想要实现 字符串到页码的映射的时候显然就不好操作,这里,我们就可以用到map,map的作用就是可以把任何基本类型(包括STL),map还可以处理这么一种特殊情况:判断一些数字是否出现过,我们通常会开一个bool数组去判断,但是有一个问题就是当这个数字十分大的时候比如1e100的数量级的时候,这个数组就不能开,这个时候就可以用到map,我们可以把很大的数字当成字符串,从而建立string --> int的映射


我们在使用map之前,需要添加头文件#include <map>


二、map的操作

1.map的定义

map<typename1, typename2> m;

我们需要在<>中添加两种数据类型,表达的是建立一个typename1 --> typename2的映射

如果是字符串到整型的映射,必须使用string不能使用char数组

map<string, int> m;

当然,我们也可以和其他的STL容器混合起来一起使用

map<set<int>, int> m;

2.map内元素的访问

(1)通过下标访问

和访问数组是一个道理,比如对于一个map<char, int> m;,我们可以直接通过m['a']去访问'a'所对应的整数,同样,它在被赋予新值的时候会被覆盖

#include <iostream>
#include <map>
using namespace std;
int main()
{
    map<char, int> m;
    m['c'] = 2;
    m['c'] = 3;
    cout << m['c'];
    return 0;
}

输出结果为:3

(2)通过迭代器访问

定义一个map迭代器

map<typename1, typename2>::iterator it;

typename1typename2就是我们在定义map的时候的类型,我们把typename1称为键

map通过it -> firstit -> second去分别访问typename1typename2

#include <iostream>
#include <map>
using namespace std;
int main()
{
    map<char, int> m;
    m['c'] = 3;
    m['a'] = 1;
    m['b'] = 2;
    for (map<char, int>::iterator it = m.begin(); it != m.end(); it ++ )
        cout << it -> first << ' ' << it -> second << endl;
    return 0;
}

当然我们可以用auto去缩写

#include <iostream>
#include <map>
using namespace std;
int main()
{
    map<char, int> m;
    m['c'] = 3;
    m['a'] = 1;
    m['b'] = 2;
    for (auto it = m.begin(); it != m.end(); it ++ )
        cout << it -> first << ' ' << it -> second << endl;
    return 0;
}

输出结果为:

a 1

b 2

c 3

我们发现,maptypename从小到大进行自动排序

目录
相关文章
|
8月前
|
C++ 容器
【C++】红黑树模拟实现STL中的map与set
【C++】红黑树模拟实现STL中的map与set
|
7月前
|
存储 编译器 C++
|
6月前
|
存储 算法 C++
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
80 0
|
6月前
|
存储 C++ 索引
C++基础知识(八:STL标准库 Map和multimap )
C++ 标准模板库(STL)中的 map 容器是一种非常有用的关联容器,用于存储键值对(key-value pairs)。在 map 中,每个元素都由一个键和一个值组成,其中键是唯一的,而值则可以重复。
|
7月前
|
C++ 容器
C++ STL标准库 《map容器详解》
C++ STL标准库 《map容器详解》
52 0
|
7月前
|
存储 C++ 容器
C++ STL标准库 《map容器详解》
C++ STL标准库 《map容器详解》
103 0
|
8月前
|
存储 C++ 容器
C++:STL - set & map
C++:STL - set & map
65 4
|
8月前
|
存储 Serverless C++
【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]
【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]
97 1
|
8月前
|
C++ 索引 容器
黑马c++ STL部分 笔记(9) map/multimap容器
黑马c++ STL部分 笔记(9) map/multimap容器
|
8月前
|
存储 C++ 容器
【STL】map和set的原理及其使用
【STL】map和set的原理及其使用