C++ Map2025年8月29日 | 阅读 12 分钟 在 C++ 中,map 是 STL (Standard Template Library) 的一部分。Map 是关联容器,用于存储排序的键值对,其中每个键都是唯一的,可以插入或删除,但不能修改。与键关联的值可以被更改。 ![]() 语法它具有以下语法: 参数它有以下参数
C++ 算法示例让我们通过一个例子来演示 C++ 中的算法 STL。 示例编译并运行输出 Employees[104]=Deep Map size: 5 Natural Order: 101: Alice 102: Bob 103: Dolly 104: Deep 105: John Reverse Order: 105: John 104: Deep 103: Dolly 102: Bob 101: Nikita Map 函数操作Map 函数可以执行多种操作。这些操作如下
现在,我们将逐一讨论所有这些操作。 访问 Map 中的元素与数组或向量不同,Map 不能使用索引号访问,因为数据是以键值对的形式存储而不是顺序存储的。相反,我们必须使用键来访问条目。方括号 [] 与键一起用于从 Map 中获取值。 C++ 访问元素示例让我们看一个 C++ 访问 Map 中元素的例子。 示例编译并运行输出 Alice has 5 years of experience. Bob has 3 years of experience. Charlie has 8 years of experience. ERROR! David has Error: 'David' is not found in the employee list. 说明 在此示例中,我们使用 Map 函数将员工姓名作为键,将工作年限作为值。它使用 [] 和 .at() 方法检索并显示特定员工的经验。 更改 Map 中的值在 C++ 中,我们可以通过为特定键赋新值来更改 Map 中该特定键的值。当我们想编辑现有记录时,例如更改薪水、年龄或分数,这非常有用。 C++ 更改 Map 中值示例让我们通过一个例子来演示 C++ 中更改 Map 中值的方法。 示例输出 Updated Employee Ages: Adarsh is 32 years old. Dia is 26 years old. Jacob is 36 years old. James is 27 years old. John is 28 years old. Joseph is 29 years old. Wesly is 31 years old. 说明 在此示例中,我们使用 Map 来存储和管理员工姓名和年龄。它展示了如何使用 [] 和 .at() 更新现有值,以及如何使用 [] 和 .insert() 创建新条目。最后,它使用基于范围的 for 循环显示更新后的员工及其当前年龄列表。 向 Map 添加元素可以使用方括号 [] 或 .insert() 函数向 Map 添加元素。
C++ 添加 Map 元素示例让我们通过一个例子来演示 C++ 中向 Map 添加元素的方法。 示例输出 Student Age Database: Arjun is 16 years old. Fatima is 17 years old. Leo is 16 years old. Luca is 15 years old. Meera is 16 years old. Noah is 17 years old. Zara is 15 years old. 说明 在此示例中,我们创建了一个 Map,用于存储学生姓名作为键,年龄作为值。它展示了向 Map 添加项目的两种方法:使用方括号 ([]) 添加或编辑条目,以及使用 .insert() 函数添加新条目而不覆盖旧条目。 具有相同键的元素在 C++ 中,Map 不允许有重复的键。Map 中的每个键都必须是唯一的,这意味着使用 .insert() 函数插入具有现有键的元素将导致操作被忽略。值可能相同,但键必须不同。 C++ 具有相同键的元素示例让我们通过一个例子来演示 C++ 中具有相同键的元素。 示例编译并运行输出 Insertion failed: Key 'John' already exists with score 85 Final Student Marks: Jacob: 78 John: 95 Joseph: 90 说明 在此示例中,我们使用 Map 来记录学生姓名和成绩,确保每个姓名(键)都是唯一的。它尝试两次插入“John”,但第二次由于键已存在而失败,这由一条消息确认。之后,程序通过直接赋值更改了 John 的分数,并显示了每个学生的最终分数。 从 Map 中移除元素在 C++ 中,使用 .erase(key) 函数来移除特定元素。之后,调用 .clear() 方法来移除所有元素。这些方法使得在实际应用中管理和更新数据集更加容易。 C++ 移除 Map 元素示例让我们通过一个例子来演示 C++ 中从 Map 中移除元素的方法。 示例编译并运行输出 Original Employee Records: David: 25 Jacob: 42 John: 36 Joseph: 29 After Removing 'John': David: 25 Jacob: 42 Joseph: 29 After Clearing All Records: No records found. 说明 在此示例中,我们创建了一个包含员工姓名和年龄的 Map,然后显示整个列表。它使用 .erase() 函数移除“John”的条目,然后显示修改后的列表。最后,它使用 .clear() 清除所有记录,并使用 .empty() 确保 Map 为空。 查找 Map 的大小在 C++ 中,Map 的 .size() 函数返回当前存储在其中的键值对的总数。在实时应用程序中,它经常用于计算记录的数量,例如用户、产品和员工。 C++ 查找 Map 大小示例现在让我们来看一个 C++ 查找 Map 大小的例子。 示例编译并运行输出 Total number of employees are: 4 说明 此 C++ 程序将员工 ID 号作为键,将员工姓名作为值存储在标准模板库 (STL) Map 中。使用方括号表示法,它向 Map 添加了四条员工记录。最后,使用 Map 的 .size() 函数,它显示了员工总数。 检查 Map 是否为空在 C++ 中,.empty() 方法用于确定 Map 是否包含任何键值对。如果 Map 为空,它返回 true (1);否则,它返回 false (0)。同样,.count(key) 函数用于确定给定的键是否存在于 Map 中,如果存在则返回 1,否则返回 0。 C++ 检查 Map 是否为空示例让我们通过一个例子来演示 C++ 中 Map 是否为空。 示例编译并运行输出 The inventory is currently empty. Inventory empty status: 0 Is 'Laptops' in stock? 1 Is 'Cell Phones' in stock? 0 说明 在此示例中,我们创建了一个名为 inventory 的 Map 来表示库存商品和数量。它首先检查 inventory 是否为空,然后添加三种商品及其各自的数量。最后,.count() 函数用于确定 inventory 是否仍然为空,以及“Laptops”和“Cell Phones”等特定商品是否可用。 遍历 Map在 C++ 中,我们可以使用基于范围的 for 循环和 auto 关键字来遍历 Map。每个 Map 元素都是一个键值对,可以使用 .first() 函数获取键,使用 .second 获取值。Map 默认按升序对键进行排序,除非另有指定,例如使用 greater 来表示降序。 C++ 遍历 Map 示例让我们通过一个例子来演示 C++ 中遍历 Map 的方法。 示例编译并运行输出 Sanjay attended: 27 days Prasad attended: 30 days Akshay attended: 25 days 说明 在此示例中,我们创建了一个名为 check_in 的 Map,用于存储姓名和每个参与者的出勤天数。它使用 greater 按姓名对 Map 进行降序排序。for 循环 auto 遍历 Map,打印每个姓名和出勤次数。 成员函数以下是 Map 的所有成员函数列表 构造函数/析构函数给出的表格显示了 C++ Map 中使用的几个构造函数/析构函数。
迭代器给出的表格显示了 C++ Map 中使用的几个迭代器函数。
容量给出的表格显示了 C++ Map 中使用的几个容量函数。
元素访问给出的表格显示了 C++ Map 中使用的几个元素访问函数。
修饰符给出的表格显示了 C++ Map 中使用的几个修改函数。
观察器给出的表格显示了 C++ Map 中使用的几个修改函数。
操作给出的表格显示了 C++ Map 中使用的几个操作函数。
分配器给出的表格显示了 C++ Map 中使用的几个分配器函数。
非成员重载函数给出的表格显示了 C++ Map 中使用的几个非成员重载函数。
C++ Map 选择题1) 在 C++ 中,哪个函数用于检查 std::map 是否为空?
答案: d) .empty() 2) 下列哪个函数会返回 C++ Map 中包含特定键的条目数?
答案: a) .count() 3) 在 C++ 中,std::map 的不同元素默认如何排列?
答案: c) 升序 4) C++ std::map 中 .insert() 函数的目的是什么?
答案: d) 如果键不存在,则添加新元素 5) std::greater 仿函数在 std::map 中有什么作用?
答案: b) 将 Map 按降序排序 下一个主题C++ multimap |
函数 C++ 中,标准模板库 (STL) 在 <<algorithm> 头文件中提供了强大的底层函数集合。这些函数有助于对数组、向量、列表和其他容器等序列执行各种操作。算法函数是通用的,并且操作迭代器,...
阅读 24 分钟
在 C++ 中,std::list 是一个序列容器,它允许元素的非连续存储。它实现为双向链表,其中每个元素包含前一个和后一个列表元素的地址。它允许我们将数据存储在……
阅读 15 分钟
在 C++ 中,multimap 是 C++ STL(标准模板库)的一部分。Multimap 是像 map 一样的关联容器,它们存储排序的键值对,但与只存储唯一键的 map 不同,multimap 可以有重复的键。默认情况下,它使用 (<) 运算符进行比较……
阅读 13 分钟
在 C++ 中,队列代表基本数据结构,它们根据先进先出(FIFO)逻辑运行。C++ 的标准模板库(STL)通过其现成的组件提供了一个队列类,这些组件可提高队列操作的效率。队列是一种线性数据结构,它通过队列处理元素……
11 分钟阅读
s 在 C++ 中,vector 是标准模板库(STL)的一部分。它们是动态数组,在添加或删除元素时可以自动调整大小。与具有固定大小的数组不同,vector 提供了广泛的灵活性和底层函数,这些函数……
11 分钟阅读
在 C++ 中,deque(双端队列)是一种队列,其中可以在队列的前端和后端添加和删除元素。它支持 FIFO 和 LIFO 操作,这比队列提供了更大的灵活性。在 C++ 中,STL deque 是一个序列容器,它……
11 分钟阅读
在 C++ 中,priority_queue 是 STL 中的一个派生容器,它只考虑优先级最高的元素。队列遵循 FIFO 原则,而 priority_queue 根据优先级弹出元素,即最高优先级的元素首先弹出。它类似于……
阅读 10 分钟
教程 编译器 程序 面向对象编程 STL 面试题 C++ STL (标准模板库) 在 C++ 中,标准模板库 (STL) 是一组强大的模板类和函数,提供了通用的数据...
阅读 13 分钟
在 C++ 中,stack 是一种线性数据结构,它遵循后进先出(LIFO)原则执行操作。这意味着最后添加的元素将首先被删除,而最后添加的元素最后被删除。在 C++ 中,STL 提供了一个……
阅读9分钟
C++ STL Set 在 C++ 中,set 代表基本数据结构,它以某种排序顺序排列唯一元素并存储它们。集合称为关联容器,唯一排序的元素称为排序键。我们可以插入或……
阅读9分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India