c++ unordered_map的end方法

在 C++ 中,myMap.end() 是 std::unordered_map(或其他 STL 容器,如 std::map、std::vector 等)类的成员函数,用于返回一个迭代器,该迭代器指向容器的末尾(end)。

1. 作用

  • myMap.end() 返回一个迭代器,指向容器中最后一个元素之后的位置。这个位置并不表示容器中的有效元素,而是一个表示"结束"的标记。

2. 主要用途

  • 检查查找结果 :在使用 find() 方法查找元素时,可以通过与 end() 进行比较来判断元素是否存在。例如:

    复制代码
    auto it = myMap.find(key);
    if (it != myMap.end()) {
        // key 存在,it 指向对应的元素
    } else {
        // key 不存在
    }
  • 遍历容器 :在使用迭代器遍历 std::unordered_map 时,通常会使用 end() 来确定循环的结束条件。例如:

    复制代码
    for (auto it = myMap.begin(); it != myMap.end(); ++it) {
        std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
    }

    3. 与 begin() 的关系

  • begin() 返回一个迭代器,指向容器中的第一个元素,而 end() 返回一个迭代器,指向最后一个元素之后的位置。有效的迭代区间是 [begin(), end()),即从第一个元素到最后一个元素(不包括 end() 指向的位置)。

4. 例子

以下是一个示例代码,展示了 end() 的用法:

复制代码
  #include <iostream>
  #include <unordered_map>

  int main() {
      std::unordered_map<int, std::string> myMap = {
          {1, "one"},
          {2, "two"},
          {3, "three"}
      };

      // 检查一个键是否存在
      int keyToFind = 2;
      auto it = myMap.find(keyToFind);
      if (it != myMap.end()) {
          std::cout << "Found: " << it->second << std::endl;
      } else {
          std::cout << "Key not found." << std::endl;
      }

      // 遍历 unordered_map
      for (auto it = myMap.begin(); it != myMap.end(); ++it) {
          std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
      }

      return 0;
  }

5. 注意事项

  • 不能解引用 end() 返回的迭代器,因为它不指向有效的元素。解引用将导致未定义行为。
  • 在执行插入或删除操作时,end() 的位置可能会变化,因此在使用迭代器时要小心。
相关推荐
nagualky1231 分钟前
GPT-4 系列退役在即:一套可回滚的模型迁移验收法
java·开发语言·ai·架构
Ai-_Man4 分钟前
DeepSeek生成的内容能否下载吗?
开发语言·javascript·人工智能·小程序·ecmascript
Evelvnk5 分钟前
计算机学习资料
开发语言·人工智能·计算机·php
IOT那些事儿8 分钟前
C++17和20版本差异
c++·mingw·msvc
垆边人似月.12 分钟前
华为题:任务调度
数据结构·c++·算法
geovindu16 分钟前
rust: Chain of Responsibility Pattern
开发语言·后端·设计模式·rust·责任链模式·行为模式
阿里嘎多学长19 分钟前
2026-10-14 GitHub 热点项目精选
开发语言·程序员·github·代码托管
迪康coolmu19 分钟前
迪康Defender网络准入控制系统落地实战:部署、配置与问题排查记录
运维·开发语言·网络·经验分享·php
兰亭妙微UI设计公司20 分钟前
兰亭妙微分享:高手设计登录页的12种切入点
开发语言·前端·javascript
木由里予22 分钟前
3D NAND 闪存的可靠性
开发语言·嵌入式硬件