set和map基础:【C++进阶学习】第五弹——二叉搜索树——二叉树进阶及set和map的铺垫-CSDN博客

前言:

目录

一、容器

二、set和multiset

一、set与multiset概述

二、set与multiset的基本操作

三、高级特性

四、set与multiset的选择

三、map和multimap

1. map与multimap的区别

2. map与multimap的使用场景

3. 基本操作

4. 注意事项

5. 示例代码

四、总结


一、容器

二、set和multiset

在C++标准模板库(STL)中,setmultiset是两种关联容器,它们在处理有序集合数据时非常有用。

一、set与multiset概述

二、set与multiset的基本操作

在使用set或multiset之前,需要包含相应的头文件:

#include <set>
#include <multiset>

以下是一些基本操作:

  1. 构造函数
set<T> s; // 默认构造函数
multiset<T> ms; // 默认构造函数
// 可以通过比较函数和分配器进行自定义构造
  1. 插入元素
s.insert(key); // set插入元素
ms.insert(key); // multiset插入元素
  1. 删除元素
s.erase(key); // 删除特定元素(set)
ms.erase(key); // 删除特定元素(multiset)
// 删除操作在multiset中会删除所有匹配的元素
  1. 查找元素
auto it = s.find(key); // 查找元素(set)
auto it = ms.find(key); // 查找元素(multiset)
// find返回指向元素的迭代器,如果未找到则返回end()
  1. 统计元素个数
s.count(key); // set中元素个数(总是1或0)
ms.count(key); // multiset中元素个数(可能是大于0的整数)
  1. 大小和容量
s.size(); // 返回元素数量
ms.size(); // 返回元素数量
s.empty(); // 判断是否为空
ms.empty(); // 判断是否为空

三、高级特性

  1. 迭代器
for (auto it = s.begin(); it != s.end(); ++it) {
    // 遍历set中的元素
}
  1. 排序规则
struct CustomCompare {
    bool operator()(const T& a, const T& b) const {
        // 自定义比较逻辑
    }
};
set<T, CustomCompare> s; // 使用自定义比较函数
multiset<T, CustomCompare> ms; // 使用自定义比较函数
  1. 性能考虑

四、set与multiset的选择

三、map和multimap

在C++的STL(标准模板库)中,mapmultimap是两种关联容器,它们用于存储键值对。这些容器使用红黑树作为底层数据结构,以确保高效的插入、查找和删除操作。

1. mapmultimap的区别

2. mapmultimap的使用场景

3. 基本操作

下面这些操作与上面set和multiset的操作基本一致,就不再写了

4. 注意事项

5. 示例代码

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
    // 使用map存储唯一键值对
   map<string, int> fruitCounts = {
        {"apple", 10},
        {"banana", 15},
        {"cherry", 5}
    };

    // 使用multimap存储多个值与相同键关联
    multimap<string, int> logins = 
    {
        {"Alice", 1001},
        {"Bob", 2001},
        {"Alice", 1003}
    };

    // 查找和打印map中的元素
    auto it = fruitCounts.find("banana");
    if (it != fruitCounts.end()) {
        cout << "Found banana: " << it->second << endl;
    }

    // 查找和打印multimap中的元素
    auto range = logins.equal_range("Alice");
    for (auto it = range.first; it != range.second; ++it) {
        cout << "Login for Alice: " << it->second << endl;
    }

    return 0;
}

运行结果:

【C++进阶学习】第六弹——set和map——体会用C++来构建二叉搜索树-LMLPHP

四、总结

【C++进阶学习】第六弹——set和map——体会用C++来构建二叉搜索树-LMLPHP

感谢各位大佬观看,创作不易,还请各位大佬点赞支持一下!!!

07-13 02:34