当前位置: 首页 > article >正文

C++头文件map

在C++中,<map> 头文件提供了一种关联容器,它存储的是键值对(std::pair),并且会自动根据键进行排序。以下是一些常用的 map 函数及其使用方式:

  1. 插入元素insert(const value_type& val)insert(initializer_list init) 用于插入元素。

    std::map<int, std::string> myMap;
    myMap.insert(std::make_pair(1, "one"));
    myMap.insert({2, "two", 3, "three"});
    
  2. 访问元素at(const Key& key) 返回键对应值的引用,如果键不存在则抛出异常。

    std::string value = myMap.at(2); // "two"
    
  3. 查找元素find(const Key& key) 返回一个指向找到元素的迭代器,如果没有找到则返回 end()

    auto it = myMap.find(2);
    if (it != myMap.end()) {
        std::cout << it->second << std::endl; // 输出 "two"
    }
    
  4. 删除元素erase(Iterator pos)erase(const Key& key) 用于删除元素。

    myMap.erase(2); // 删除键为2的元素
    
  5. 获取元素数量size() 返回 map 中元素的数量。

    std::cout << "Size: " << myMap.size() << std::endl;
    
  6. 清空容器clear() 移除所有元素。

    myMap.clear();
    
  7. 检查容器是否为空empty() 检查 map 是否为空。

    if (myMap.empty()) {
        std::cout << "The map is empty." << std::endl;
    }
    
  8. 获取迭代器begin()end() 分别返回指向第一个元素和最后一个元素之后的迭代器。

    for (auto it = myMap.begin(); it != myMap.end(); ++it) {
        std::cout << it->first << " => " << it->second << std::endl;
    }
    
  9. 获取键的总数count(const Key& key) 返回键在 map 中出现的次数。

    std::cout << "Count of key 2: " << myMap.count(2) << std::endl;
    
  10. 获取键值对的范围equal_range(const Key& key) 返回一个包含两个迭代器的 pair,分别指向键值对的范围的开始和结束。

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


在竞赛过程中,使用 `map` 的细节包括:

- **性能**:`map` 的插入、删除和查找操作的时间复杂度为 O(log n),其中 n 是 `map` 中元素的数量。
- **内存使用**:`map` 可能需要比数组或向量更多的内存,因为它需要存储额外的信息来维护元素的排序。
- **迭代器失效**:在对 `map` 进行插入或删除操作后,之前的所有迭代器可能会失效,需要重新获取迭代器。
- **元素唯一性**:`map` 中的键必须是唯一的,尝试插入重复的键将不会成功。

以上是 `<map>` 头文件中一些常用函数的介绍,以及在竞赛编程中的使用细节。在实际编程中,应根据具体需求选择合适的容器和操作。


http://www.kler.cn/a/471844.html

相关文章:

  • 电子图纸怎么保障安全?
  • Linux的proc目录与什么有关?【以及它里面的文件各自记录着什么信息】
  • 单片机控制
  • shell基础使用及vim的常用快捷键
  • 来说数据库
  • 【AI-21】深度学习框架中的神经网络
  • “挑战杯”大学生创业计划大赛(小挑)赛事介绍
  • Excel 技巧03 - 如何对齐小数位数? (★)如何去掉小数点?如何不四舍五入去掉小数点?
  • leetcode LCR 127. 跳跃训练
  • 一键完成!!网页打包成桌面应用
  • 【微服务】2、网关
  • 明源地产ERP VisitorWeb_XMLHTTP.aspx Sql注入漏洞复现(附脚本)
  • 英伟达 RTX 5090 显卡赋能医疗大模型:变革、挑战与展望
  • MybatisPlus分页配置开发环境有效,测试环境生产环境不生效,日志中的sql没有分页参数,直接查询
  • IDEA中Maven依赖包导入失败报红的潜在原因
  • (概率论)区间估计 和 置信区间 、 假设检验
  • Android存储方案对比(SharedPreferences 、 MMKV 、 DataStore)
  • Modbus 软件里,Modbus tcp 转 ETHERCAT 配置法
  • Redis-代理(解决redis压力)
  • C++ constexpr(八股总结)