c++map unordered_map multimap_bigemap官网

c++map unordered_map multimap_bigemap官网

编码文章call10242025-02-18 10:36:3314A+A-

关于 map、unordered_map 和 multimap,它们都是 C++ STL 中的关联容器(Associative Container),可以用于存储键-值对数据。

实现方式

  1. map

map 是 C++ STL(Standard Template Library)中的一个关联容器(Associative Container)。它使用红黑树(Red-Black Tree)实现,内部元素是按照键值排序的,能够进行快速查找、插入和删除操作。每个元素都包含了两个值,即键和值,并且每个键只能映射到一个唯一的值上。

  1. unordered_map

unordered_map 也是 C++ STL 中的关联容器,使用哈希表(Hash Table)实现,内部元素是无序的,但是能够进行快速查找、插入和删除操作。每个元素都包含了两个值,即键和值,并且每个键只能映射到一个唯一的值上。

  1. multimap

multimap 也是 C++ STL 中的关联容器,使用红黑树实现,能够进行快速查找、插入和删除操作。但是不同于 map 和 unordered_map,每个键可以映射到多个值上,这意味着可以存储重复的键值对。每个元素都包含了两个值,即键和值。

应用方法

  1. map

使用 map 存储键值对时,先添加头文件 #include ,然后可以定义一个 map 容器:

std::map m; // 定义一个 map,键为 string,值为 int

常用的 map 库函数有:

  • insert():插入一个键值对
  • erase():删除指定键值对
  • find():查找指定键的元素
  • count():返回指定键的元素个数

以下是 map 的代码示例:

#include 
#include 

int main() {
    std::map m; // 定义一个 map,键为 string,值为 int
    m["apple"] = 10; // 插入一个键值对
    m["banana"] = 20;
    m["orange"] = 30;

    // 访问元素
    std::cout << m["apple"] << std::endl; // 输出:10

    // 遍历元素
    for (auto& pair : m) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}
  1. unordered_map

使用 unordered_map 存储键值对时,先添加头文件 #include ,然后可以定义一个 unordered_map 容器:

std::unordered_map um; // 定义一个 unordered_map,键为 string,值为 int

常用的 unordered_map 库函数有:

  • insert():插入一个键值对
  • erase():删除指定键值对
  • find():查找指定键的元素
  • count():返回指定键的元素个数

以下是 unordered_map 的代码示例:

#include 
#include 

int main() {
    std::unordered_map um; // 定义一个 unordered_map,键为 string,值为 int
    um["apple"] = 10;
    um["banana"] = 20;
    um["orange"] = 30;

    // 访问元素
    std::cout << um["apple"] << std::endl; // 输出:10

    // 遍历元素
    for (auto& pair : um) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}
  1. multimap

使用 multimap 存储键值对时,先添加头文件 #include ,然后可以定义一个 multimap 容器:

std::multimap mm; // 定义一个 multimap,键为 string,值为 int

常用的 multimap 库函数有:

  • insert():插入一个键值对
  • erase():删除指定键值对
  • find():查找指定键的元素
  • equal_range():返回指定键的所有元素范围
  • lower_bound():返回第一个大于等于指定键的元素的迭代器
  • upper_bound():返回第一个大于指定键的元素的迭代器

以下是 multimap 的代码示例:

#include 
#include 

int main() {
    std::multimap mm; // 定义一个 multimap,键为 string,值为 int
    mm.insert(std::make_pair("apple", 10)); // 插入一个键值对
    mm.insert(std::make_pair("banana", 20));
    mm.insert(std::make_pair("orange", 30));

    // 访问元素
    auto range = mm.equal_range("apple"); // 查找键为 apple 的元素范围
    for (auto it = range.first; it != range.second; it++) {
        std::cout << "apple found: " << it->second << std::endl;
    }

    // 遍历元素
    for (auto& pair : mm) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}

区别和联系

  1. 区别:
  • map 和 multimap 内部元素是按照键值排序的,而 unordered_map 内部元素是无序的。
  • map 内部使用红黑树实现,multimap 也使用红黑树实现,而 unordered_map 使用哈希表实现。
  • map 和 unordered_map 中每个键只能映射到一个唯一的值上,而 multimap 中每个键可以映射到多个值上。
  1. 联系:
  • map、unordered_map 和 multimap 都是 C++ STL 中的关联容器,用于存储键-值对数据。
  • 它们都提供了插入、删除、查找等常用操作,且都能够快速完成这些操作。
  • 库函数中,map 和 unordered_map
点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4