STL—map(二)

简介: map中的函数

3.map中的函数

(1)find()

m.find(key);返回值为key的映射的迭代器,时间复杂度是O(logN),N为map中映射的个数

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

输出结果为:b 2

(2)erase()

删除单个元素

m.erase(it);it为需要删除元素的迭代器,时间复杂度为O(1)

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

输出结果为:

a 1

c 3

m.erase(key);key为欲删除的映射的键,时间复杂度为O(logN),N为map内元素的个数

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

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

m.erase(first, last);,其中first是需要删除区间的起始迭代器,last为需要删除的区间的末尾迭代器的下一个地址,即删除左闭右开区间[first, last),时间复杂度为O(last - first)

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

输出结果为:a 1

(3)size()

m.size()用来获得map中映射的对数,时间复杂度为O(1)

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

输出结果为:3

(4)clear()

m.clear();用来清空map中的所有元素,时间复杂度为O(N),N为map中元素的个数

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

输出结果为:0

目录
相关文章
|
10月前
|
编译器 C++ 容器
【c++丨STL】基于红黑树模拟实现set和map(附源码)
本文基于红黑树的实现,模拟了STL中的`set`和`map`容器。通过封装同一棵红黑树并进行适配修改,实现了两种容器的功能。主要步骤包括:1) 修改红黑树节点结构以支持不同数据类型;2) 使用仿函数适配键值比较逻辑;3) 实现双向迭代器支持遍历操作;4) 封装`insert`、`find`等接口,并为`map`实现`operator[]`。最终,通过测试代码验证了功能的正确性。此实现减少了代码冗余,展示了模板与仿函数的强大灵活性。
279 2
|
10月前
|
存储 算法 C++
【c++丨STL】map/multimap的使用
本文详细介绍了STL关联式容器中的`map`和`multimap`的使用方法。`map`基于红黑树实现,内部元素按键自动升序排列,存储键值对,支持通过键访问或修改值;而`multimap`允许存在重复键。文章从构造函数、迭代器、容量接口、元素访问接口、增删操作到其他操作接口全面解析了`map`的功能,并通过实例演示了如何用`map`统计字符串数组中各元素的出现次数。最后对比了`map`与`set`的区别,强调了`map`在处理键值关系时的优势。
525 73
|
C++ 容器
【C++】红黑树模拟实现STL中的map与set
【C++】红黑树模拟实现STL中的map与set
|
存储 编译器 C++
|
存储 算法 C++
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
|
存储 C++ 索引
C++基础知识(八:STL标准库 Map和multimap )
C++ 标准模板库(STL)中的 map 容器是一种非常有用的关联容器,用于存储键值对(key-value pairs)。在 map 中,每个元素都由一个键和一个值组成,其中键是唯一的,而值则可以重复。
291 0
|
C++ 容器
C++ STL标准库 《map容器详解》
C++ STL标准库 《map容器详解》
149 0
|
存储 C++ 容器
C++ STL标准库 《map容器详解》
C++ STL标准库 《map容器详解》
324 0
|
C++ 索引 容器
黑马c++ STL部分 笔记(9) map/multimap容器
黑马c++ STL部分 笔记(9) map/multimap容器
|
存储 C++ 容器
【STL】map和set的原理及其使用
【STL】map和set的原理及其使用