掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

C++中std::map用法详解(初始化、插入、取值、删除、遍历)

在 C++ 中,std::map 是标准模板库(STL)提供的一个重要容器类,用于存储键值对(key-value pairs)。它基于红黑树实现,具有自动排序和高效查找的特点。无论是用于存储配置信息、缓存数据还是构建索引结构,std::map 都是开发者不可或缺的工具。本文将从 std::map 的初始化、插入、取值、删除以及遍历五个方面进行详细解析,帮助读者全面掌握这一强大的容器类。

一、初始化

  1. 默认构造函数

std::map 提供了多种构造函数,其中最常用的是默认构造函数:

std::map<int, std::string> myMap;
  1. 带初始值的构造函数

可以直接通过初始化列表为 std::map 提供初始值:

std::map<int, std::string> myMap = { {1, "one"}, {2, "two"} };
  1. 复制构造函数

可以通过复制另一个 std::map 对象来初始化:

std::map<int, std::string> map1 = { {1, "one"}, {2, "two"} };
std::map<int, std::string> map2(map1);
  1. 移动构造函数

通过移动语义可以更高效地初始化:

std::map<int, std::string> map1 = { {1, "one"}, {2, "two"} };
std::map<int, std::string> map2(std::move(map1));

二、插入

  1. 单个元素插入

可以使用 insert 方法插入单个键值对:

myMap.insert({3, "three"});
  1. 批量插入

可以通过迭代器范围插入多个元素:

std::vector<std::pair<int, std::string>> data = { {4, "four"}, {5, "five"} };
myMap.insert(data.begin(), data.end());
  1. 插入或更新

如果键已存在,可以使用 operator[] 更新值:

myMap[1] = "ONE";
  1. 插入或返回

可以使用 emplace 方法插入新元素,并返回插入结果:

auto result = myMap.emplace(6, "six");
if (!result.second) {
    std::cout << "Key already exists." << std::endl;
}

三、取值

  1. 通过键访问值

可以使用 operator[] 或 at 方法通过键获取对应的值:

std::string value = myMap[1]; // 如果键不存在,会插入默认值
std::string value = myMap.at(1); // 如果键不存在,会抛出异常
  1. 检查键是否存在

可以使用 find 方法检查键是否存在于 std::map 中:

auto it = myMap.find(1);
if (it != myMap.end()) {
    std::cout << "Key found." << std::endl;
}
  1. 获取所有键值对

可以使用 begin() 和 end() 迭代器遍历所有键值对:

for (const auto &pair : myMap) {
    std::cout << pair.first << ": " << pair.second << std::endl;
}

四、删除

  1. 删除单个元素

可以使用 erase 方法删除指定键的元素:

myMap.erase(1);
  1. 删除范围内的元素

可以删除指定范围内的元素:

auto start = myMap.find(2);
auto end = myMap.find(4);
myMap.erase(start, end);
  1. 清空所有元素

可以使用 clear 方法清空所有元素:

myMap.clear();

五、遍历

  1. 使用迭代器遍历

可以使用迭代器逐一遍历 std::map 中的所有元素:

for (auto it = myMap.begin(); it != myMap.end(); ++it) {
    std::cout << it->first << ": " << it->second << std::endl;
}
  1. 使用范围 for 循环

可以使用范围 for 循环简化遍历过程:

for (const auto &pair : myMap) {
    std::cout << pair.first << ": " << pair.second << std::endl;
}
  1. 反向遍历

可以使用反向迭代器进行反向遍历:

for (auto rit = myMap.rbegin(); rit != myMap.rend(); ++rit) {
    std::cout << rit->first << ": " << rit->second << std::endl;
}

C++中std::map用法详解(初始化、插入、取值、删除、遍历)

std::map 是 C++ 中一个功能强大的容器类,广泛应用于需要键值对存储的场景。本文从初始化、插入、取值、删除以及遍历五个方面进行了详细解析,涵盖了 std::map 的基本用法和高级技巧。通过本文的学习,读者应该能够熟练掌握 std::map 的各种操作,并在实际开发中灵活运用。

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

  • 查询vin车架号

    通过车牌号查询vin

    通过车牌号查询vin

  • 人和车辆核验

    将用户姓名和车牌号进行比对,验证是否人车合一

    将用户姓名和车牌号进行比对,验证是否人车合一

  • 汽车的过户信息查询

    通过车牌号和车辆的vin信息,查询车辆的过户信息,包括是否过户,最近过户日期,过户次数等等

    通过车牌号和车辆的vin信息,查询车辆的过户信息,包括是否过户,最近过户日期,过户次数等等

  • 车辆过户信息查询

    通过车辆vin码查询车辆的过户次数等相关信息

    通过车辆vin码查询车辆的过户次数等相关信息

  • 银行卡五元素校验

    验证银行卡、身份证、姓名、手机号是否一致并返回账户类型

    验证银行卡、身份证、姓名、手机号是否一致并返回账户类型

0512-88869195
数 据 驱 动 未 来
Data Drives The Future