C++中map简单介绍说明

在C++中,map 是一个非常重要的STL(标准模板库)容器,它以键值对的形式存储数据,允许快速查找、插入和删除操作。以下是对 map 的详细介绍以及相关方法。

基本特性

  1. 有序性map 会根据键的大小自动排序。
  2. 唯一的键:每个键都是唯一的,不能有重复键。如果插入了相同的键,之前的值会被新值覆盖。
  3. 时间复杂度:查找、插入、删除的平均和最坏时间复杂度都是 O(log n)。
  4. 默认类型map 默认存储 pair<const Key, T> 类型。

相关方法

  1. 构造函数

    • map(): 默认构造函数,创建一个空的map。
    • map(const Compare& comp, const Allocator& alloc = allocator() ): 指定比较规则和分配器。
  2. 插入元素

    • insert(): 插入一个键值对。

      myMap.insert({key, value});
      myMap.insert(std::pair<keyType, valueType>(key, value));
      
    • 使用下标操作符:

      myMap[key] = value; // 如果key不存在,会插入一个新的键值对
      
  3. 查找元素

    • find(): 查找键对应的值,返回一个迭代器。

      auto it = myMap.find(key);
      if (it != myMap.end()) {
          // 找到了
      }
      
    • count(): 返回特定键的个数(在 map 中通常是 0 或 1)。

      size_t count = myMap.count(key);
      
    • 使用下标操作符,如果键存在,返回对应的值;如果不存在,就会插入一个默认值:

      T value = myMap[key]; // 注意:这可能导致插入
      
  4. 删除元素

    • erase(): 根据键删除元素。

      myMap.erase(key);
      
    • 可以接受迭代器来删除特定位置的元素:

      myMap.erase(it); // it 是指向元素的迭代器
      
  5. 访问元素

    • at(): 通过键访问对应的值,若键不存在则会抛出异常。
      T value = myMap.at(key); // 若键不存在将抛出 std::out_of_range 异常
      
  6. 其他方法

    • size(): 返回元素个数。
    • empty(): 判断容器是否为空。
    • clear(): 清空所有元素。
    • begin(), end(): 返回指向第一个和最后一个元素的迭代器。
    • rbegin(), rend(): 反向迭代器。

遍历 map

可以使用范围基 for 循环或迭代器遍历所有元素:

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

// 使用迭代器
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
    std::cout << it->first << ": " << it->second << std::endl;
}

示例代码

以下是一个简单的示例,展示了 map 的使用:

#include <iostream>
#include <map>
#include <string>

int main() {
    std::map<int, std::string> myMap;
    
    // 插入元素
    myMap[1] = "apple";
    myMap[2] = "banana";
    myMap.insert({3, "cherry"});
    
    // 查找元素
    auto it = myMap.find(2);
    if (it != myMap.end()) {
        std::cout << "Found: " << it->second << std::endl; // 输出: Found: banana
    }
    
    // 删除元素
    myMap.erase(1);
    
    // 遍历 map
    for (const auto &pair : myMap) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }

    return 0;
}

总结

map 是 C++ STL 中强大且灵活的容器,适用于许多需要高效键值对存储与访问的场景。无论是查找、插入还是删除操作,map 都能提供优异的性能表现。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值