【C++】STL 容器 - map 关联容器 ④ ( map 容器常用 api 操作 | 查找指定元素 | 获取元素个数 | 获取大于等于指定键的元素 | 获取大于指定键的元素 | 获取等于指定键 )

迈不过友情╰ 2024-02-05 21:12 173阅读 0赞

文章目录

  • 一、查找指定元素 - std::map#find() 函数
    • 1、函数原型简介
    • 2、代码示例
  • 二、获取元素个数 - std::map#count() 函数
    • 1、函数原型简介
    • 2、代码示例
  • 三、获取大于等于指定键的元素 - std::map#lower_bound 函数
    • 1、函数原型简介
    • 2、代码示例
  • 四、获取大于指定键的元素 - std::map#upper_bound 函数
    • 1、函数原型简介
    • 2、代码示例
  • 五、获取等于指定键的元素 - std::map#equal_range 函数
    • 1、函数原型简介
    • 2、代码示例

一、查找指定元素 - std::map#find() 函数


1、函数原型简介

在 C++ 语言 的 标准模板库 ( STL , Standard Template Library ) 中 , std::map 关联容器类 提供了 find() 成员函数 , 用于 查找容器中是否存在具有特定键 的元素 , 函数原型如下 :

  1. iterator find(const Key& key);
  • 参数解析 : find() 函数接受一个 键 Key 作为参数 ;
  • 返回值解析 :

    • 如果 在 map 容器中 找到了该键 , 会 返回一个指向该 键 所在 pair 对组元素 的迭代器 ;
    • 如果 在 map 容器中 没有找到 该键 , 则 返回指向容器末尾的迭代器 , 该迭代器指向 容器中最后一个值的后面位置 , 不可取值 ;

2、代码示例

代码示例 :

  1. #include "iostream"
  2. using namespace std;
  3. #include "map"
  4. int main() {
  5. map<string, int> myMap;
  6. myMap["Tom"] = 18;
  7. myMap["Jerry"] = 12;
  8. // 使用 find() 查找元素
  9. // 如果找到了元素, 则返回指向元素的迭代器
  10. // 如果没找到元素, 则返回末尾迭代器 end()
  11. map<string, int>::iterator it = myMap.find("Tom");
  12. // 判定是否找到了 Tom 键
  13. if (it != myMap.end()) {
  14. // 找到了元素
  15. cout << "找到元素: " << it->first << "\t" << (*it).second << endl;
  16. }
  17. else {
  18. // 没找到元素
  19. cout << "没有找到元素" << endl;
  20. }
  21. // 控制台暂停 , 按任意键继续向后执行
  22. system("pause");
  23. return 0;
  24. };

执行结果 :

找到元素: Tom 18
Press any key to continue . . .

在这里插入图片描述

二、获取元素个数 - std::map#count() 函数


1、函数原型简介

在 std::map 关联容器 中 , 提供了 count() 成员函数 , 用于 统计容器中具有特定 键 Key 的元素的数量 ;

std::map 容器中 每个 键 Key 都是唯一的 , 因此 count() 函数对于 std::map 来说实际上 只能 返回 1 ( 找到了该键 Key ) 或 0 ( 没有找到该键 Key ) ;

std::map#count() 函数原型如下 :

  1. size_type count(const Key& key) const;
  • 参数解析 : Key 是 std::map 中元素的键类型 , 这里 接收一个 键 类型的引用 ;
  • 返回值解析 : size_type 是一个无符号整数类型 , 用于 表示容器中元素的数量 ;

2、代码示例

代码示例 :

  1. #include "iostream"
  2. using namespace std;
  3. #include "map"
  4. int main() {
  5. map<int, string> myMap;
  6. myMap[1] = "Tom";
  7. // 统计 1 键值的个数
  8. cout << myMap.count(1) << endl;
  9. // 控制台暂停 , 按任意键继续向后执行
  10. system("pause");
  11. return 0;
  12. };

执行结果 :

1
Press any key to continue . . .

在这里插入图片描述

三、获取大于等于指定键的元素 - std::map#lower_bound 函数


1、函数原型简介

在 C++ 语言 的 标准模板库 ( STL , Standard Template Library ) 中 , std::map 关联容器类 提供了 lower_bound() 成员函数 , 该函数返回一个迭代器 , 指向在 有序映射 中第一个 键 Key 大于等于 给定键值的元素 ; 如果映射中不存在这样的键 Key , 则返回 尾部迭代器 ;

std::map#lower_bound 函数原型 :

  1. iterator lower_bound(const Key& key);
  • 参数解析 : 参数 是 键 Key 的值 ;
  • 返回值解析 : 返回一个迭代器 , 指向在 有序映射 中第一个 键 Key 大于等于 给定键值的元素 ;

2、代码示例

代码示例 :

  1. #include "iostream"
  2. using namespace std;
  3. #include "map"
  4. int main() {
  5. map<int, string> myMap;
  6. myMap[1] = "Blue";
  7. myMap[2] = "Red";
  8. myMap[4] = "Green";
  9. myMap[5] = "Black";
  10. myMap[6] = "White";
  11. // 使用lower_bound() 查找第一个键 大于等于 2 的元素
  12. map<int, string>::iterator it = myMap.lower_bound(2);
  13. if (it != myMap.end()) {
  14. // 找到了元素
  15. std::cout << "第一个大于等于 2 的元素 : " << it->first << "\t" << it->second << std::endl;
  16. }
  17. else {
  18. // 没找到元素
  19. std::cout << "没有找到大于等于 2 的元素" << std::endl;
  20. }
  21. // 控制台暂停 , 按任意键继续向后执行
  22. system("pause");
  23. return 0;
  24. };

执行结果 :

第一个大于等于 2 的元素 : 2 Red
Press any key to continue . . .

在这里插入图片描述

四、获取大于指定键的元素 - std::map#upper_bound 函数


1、函数原型简介

在 C++ 语言 的 标准模板库 ( STL , Standard Template Library ) 中 , std::map 关联容器类 提供了 upper_bound() 成员函数 , 该函数返回一个迭代器 , 指向在 有序映射 中第一个 键 Key 大于 给定键值的元素 ; 如果映射中不存在这样的键 Key , 则返回 尾部迭代器 ;

std::map#upper_bound 函数原型 :

  1. iterator upper_bound(const Key& key);
  • 参数解析 : 参数 是 键 Key 的值 ;
  • 返回值解析 : 返回一个迭代器 , 指向在 有序映射 中第一个 键 Key 大于 给定键值的元素 ;

2、代码示例

代码示例 :

  1. #include "iostream"
  2. using namespace std;
  3. #include "map"
  4. int main() {
  5. map<int, string> myMap;
  6. myMap[1] = "Blue";
  7. myMap[2] = "Red";
  8. myMap[4] = "Green";
  9. myMap[5] = "Black";
  10. myMap[6] = "White";
  11. // 使用lower_bound() 查找第一个键 大于 4 的元素
  12. map<int, string>::iterator it = myMap.lower_bound(4);
  13. if (it != myMap.end()) {
  14. // 找到了元素
  15. std::cout << "第一个大于 4 的元素 : " << it->first << "\t" << it->second << std::endl;
  16. }
  17. else {
  18. // 没找到元素
  19. std::cout << "没有找到大于 4 的元素" << std::endl;
  20. }
  21. // 控制台暂停 , 按任意键继续向后执行
  22. system("pause");
  23. return 0;
  24. };

执行结果 :

第一个大于 4 的元素 : 4 Green
Press any key to continue . . .

在这里插入图片描述

五、获取等于指定键的元素 - std::map#equal_range 函数


1、函数原型简介

std::map 关联容器 类 提供了 equal_range() 成员函数 , 可以 在 有序映射 中查找等于给定键值的元素范围 , 并返回表示该 范围 的迭代器对 , 该范围是一个 前闭后开区间 ;

由于 std::map 中的 每个 键 Key 都是唯一的 , 因此 equal_range() 实际上返回的范围最多只包含一个元素 ;

在 std:multimap 中 , 该函数才有实际意义 ;

std::map#equal_range() 函数原型 :

  1. std::pair<iterator, iterator> equal_range(const Key& key);
  • 参数解析 : Key 是 std::map 中元素的键类型 , 这里 接收一个 键 类型的引用 ;
  • 返回值解析 : 返回值类型是 std::pair , 其中两个迭代器分别指向 等于给定键 Key 的 范围的开始迭代器 ( 包含该迭代器指向的元素 ) 和 结束迭代器 ( 不包含该迭代器指向的元素 ) ;

2、代码示例

代码示例 :

  1. #include "iostream"
  2. using namespace std;
  3. #include "map"
  4. int main() {
  5. map<int, string> myMap;
  6. myMap[1] = "Blue";
  7. myMap[2] = "Red";
  8. myMap[4] = "Green";
  9. myMap[5] = "Black";
  10. myMap[6] = "White";
  11. // 使用equal_range() 查找 等于 4 的元素范围
  12. pair<map<int, string>::iterator, map<int, string>::iterator> its = myMap.equal_range(4);
  13. if (its.first != myMap.end()) {
  14. // 找到了元素
  15. std::cout << "找到了等于 4 的元素 : " << its.first->first << "\t" << its.first->second << std::endl;
  16. }
  17. else {
  18. // 没找到元素
  19. std::cout << "没有找等于 4 的元素" << std::endl;
  20. }
  21. // 控制台暂停 , 按任意键继续向后执行
  22. system("pause");
  23. return 0;
  24. };

执行结果 :

找到了等于 4 的元素 : 4 Green
Press any key to continue . . .

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,173人围观)

还没有评论,来说两句吧...

相关阅读