当前位置:实例文章 » 其他实例» [文章]详解 C++中STL的map/multimap

详解 C++中STL的map/multimap

发布人:shili8 发布时间:2025-02-25 11:33 阅读次数:0

**C++ 中 STL 的 map 和 multimap**

在 C++ 中,STL(Standard Template Library)提供了一个强大的数据结构集合,包括 `map` 和 `multimap`。这两个容器都是关联数组的实现,它们允许快速查找和插入键值对。

**1. map**

`map` 是一种关联数组,它使用关键字(key)来索引值(value)。每个关键字都与一个唯一的值相关联。在 `map` 中,关键字必须是可比较的,并且不能重复。`map` 的主要特点是它允许快速查找和插入关键字-值对。

**1.1 map 的定义**

cpptemplate 
class map {
public:
 // ...
};


在这个定义中,`Key` 和 `T` 是两个模板参数,它们分别代表关键字类型和值类型。

**1.2 map 的构造函数**

cppmap() : _size(0), _node_count(0) {}


这是 `map` 的默认构造函数,它初始化了容器的大小和节点数量。

**1.3 map 的插入操作**

cppvoid insert(const Key& key, const T& value);


这个函数将一个关键字-值对插入到 `map` 中。如果关键字已经存在,旧值会被覆盖。

**1.4 map 的查找操作**

cppT& operator[](const Key& key);


这个运算符重载允许使用关键字来访问相应的值。如果关键字不存在,会引发异常。

**2. multimap**

`multimap` 是一种关联数组,它使用关键字(key)来索引值(value)。与 `map` 类似,每个关键字都与一个或多个值相关联。在 `multimap` 中,关键字可以重复。`multimap` 的主要特点是它允许快速查找和插入关键字-值对。

**2.1 multimap 的定义**

cpptemplate 
class multimap {
public:
 // ...
};


在这个定义中,`Key` 和 `T` 是两个模板参数,它们分别代表关键字类型和值类型。

**2.2 multimap 的构造函数**

cppmultimap() : _size(0), _node_count(0) {}


这是 `multimap` 的默认构造函数,它初始化了容器的大小和节点数量。

**2.3 multimap 的插入操作**

cppvoid insert(const Key& key, const T& value);


这个函数将一个关键字-值对插入到 `multimap` 中。如果关键字已经存在,旧值会被覆盖。

**2.4 multimap 的查找操作**

cppT& operator[](const Key& key);


这个运算符重载允许使用关键字来访问相应的值。如果关键字不存在,会引发异常。

**示例代码**

cpp#include <iostream>
#include <map>

int main() {
 // map 示例 std::map<std::string, int> myMap;
 myMap.insert(std::make_pair("apple",5));
 myMap.insert(std::make_pair("banana",10));

 std::cout << "myMap[" << "apple" << "] = " << myMap["apple"] << std::endl;

 // multimap 示例 std::multimap<std::string, int> myMultimap;
 myMultimap.insert(std::make_pair("apple",5));
 myMultimap.insert(std::make_pair("banana",10));

 auto range = myMultimap.equal_range("apple");
 for (auto it = range.first; it != range.second; ++it) {
 std::cout << "myMultimap[" << it->first << "] = " << it->second << std::endl;
 }

 return0;
}


在这个示例代码中,我们首先定义了一个 `map` 和一个 `multimap`。然后我们使用 `insert` 函数将关键字-值对插入到容器中。最后,我们使用 `operator[]` 来访问相应的值。

**总结**

本文详细介绍了 C++ 中 STL 的 `map` 和 `multimap` 容器。这些容器都是关联数组的实现,它们允许快速查找和插入关键字-值对。在 `map` 中,关键字必须是可比较的,并且不能重复,而在 `multimap` 中,关键字可以重复。示例代码展示了如何使用这些容器来存储和访问数据。

其他信息

其他资源

Top