如何在C++中使用键值对?c++map介绍

9,227次阅读
没有评论

共计 1964 个字符,预计需要花费 5 分钟才能阅读完成。

C++ map 是一种关联容器,它可以存储键值对的数据。map 的特点是,它的键是唯一的,而且是按照一定的顺序排列的。map 的底层实现是红黑树,所以它的插入、删除、查找等操作的时间复杂度都是 O(logn)。

要使用 map,首先需要包含头文件

,然后声明一个 map 对象,指定键和值的类型。例如:

#include 
#include 
#include 
using namespace std;


// 声明一个 map 对象,键是 string 类型,值是 int 类型
map m;

接下来,可以用以下几种方式向 map 中添加数据:

  • 使用下标运算符 [],如果键不存在,则会创建一个新的键值对,并将值初始化为默认值。如果键已经存在,则会覆盖原来的值。例如:
m["Alice"] = 100; // 创建一个新的键值对,键为 "Alice",值为 100
m["Bob"] = 200; // 创建一个新的键值对,键为 "Bob",值为 200
m["Alice"] = 300; // 覆盖原来的值,将 "Alice" 对应的值改为 300
  • 使用 insert() 函数,它可以接受一个 pair 对象或一个迭代器范围作为参数。如果键不存在,则会插入一个新的键值对。如果键已经存在,则不会做任何改变。例如:
m.insert(pair("Charlie", 400)); // 插入一个新的键值对,键为 "Charlie",值为 400
m.insert(pair("Alice", 500)); // 不会改变任何东西,因为 "Alice" 已经存在 
  • 使用 emplace() 函数,它可以直接传递键和值作为参数,而不需要创建 pair 对象。它的效果和 insert() 函数相同。例如:
m.emplace("David", 600); // 插入一个新的键值对,键为 "David",值为 600
m.emplace("Bob", 700); // 不会改变任何东西,因为 "Bob" 已经存在 

要从 map 中删除数据,可以用以下几种方式:

  • 使用 erase() 函数,它可以接受一个键或一个迭代器或一个迭代器范围作为参数。它会删除指定的键值对,并返回被删除的元素个数或者下一个有效的迭代器。例如:
m.erase("Alice"); // 删除 "Alice" 对应的键值对,并返回 1
m.erase(m.begin()); // 删除第一个键值对,并返回下一个有效的迭代器
m.erase(m.begin(), m.end()); // 删除所有的键值对,并返回尾后迭代器 
  • 使用 clear() 函数,它会清空整个 map,使其变成空容器。

要从 map 中查找数据,可以用以下几种方式:

  • 使用 find() 函数,它可以接受一个键作为参数,并返回指向该键对应的元素的迭代器。如果没有找到该键,则返回尾后迭代器。例如:
auto it = m.find("Bob"); // 查找 "Bob" 对应的元素,并返回指向它的迭代器
if (it != m.end()) {cout first second 
  • 使用 count() 函数,它可以接受一个键作为参数,并返回该键在 map 中出现的次数。由于 map 中的键是唯一的,所以该函数只能返回 0 或 1。例如:
int n = m.count("Charlie"); // 查找 "Charlie" 在 map 中出现的次数,并返回它
if (n == 1) {cout 
  • 使用下标运算符 [],如果键存在,则返回对应的值的引用。如果键不存在,则会创建一个新的键值对,并将值初始化为默认值,并返回该值的引用。例如:
int x = m["David"]; // 查找 "David" 对应的值,并返回它,此时 x 为 600
int y = m["Eve"]; // 查找 "Eve" 对应的值,由于不存在,会创建一个新的键值对,键为 "Eve",值为 0,并返回该值的引用,此时 y 为 0 

要遍历 map 中的数据,可以用以下几种方式:

  • 使用迭代器,可以用 begin() 和 end() 函数获取 map 的首尾迭代器,然后用 ++ 运算符逐个访问每个元素。每个元素是一个 pair 对象,可以用 first 和 second 成员访问键和值。例如:
for (auto it = m.begin(); it != m.end(); ++it) {cout first second 
  • 使用范围 for 循环,可以直接遍历 map 中的每个元素。每个元素是一个 pair 对象,可以用 first 和 second 成员访问键和值。例如:
for (auto p : m) {cout 
  • 使用 for_each 算法,可以传递一个函数或者一个 lambda 表达式作为参数,对 map 中的每个元素进行操作。每个元素是一个 pair 对象,可以用 first 和 second 成员访问键和值。例如:
#include 
// 定义一个函数,打印一个键值对
void print(pair p) {cout  p) {cout 

以上就是 C ++ map 的基本用法,希望对你有所帮助。

C++ 相关课程推荐 C++ 相关课程

原文地址: 如何在 C ++ 中使用键值对?c++map 介绍

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-23发表,共计1964字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)