赞
踩
在 C++ 语言 的 标准模板库 ( STL , Standard Template Library ) 中 , std::map 关联容器类 提供了 find() 成员函数 , 用于 查找容器中是否存在具有特定键 的元素 , 函数原型如下 :
iterator find(const Key& key);
代码示例 :
#include "iostream" using namespace std; #include "map" int main() { map<string, int> myMap; myMap["Tom"] = 18; myMap["Jerry"] = 12; // 使用 find() 查找元素 // 如果找到了元素, 则返回指向元素的迭代器 // 如果没找到元素, 则返回末尾迭代器 end() map<string, int>::iterator it = myMap.find("Tom"); // 判定是否找到了 Tom 键 if (it != myMap.end()) { // 找到了元素 cout << "找到元素: " << it->first << "\t" << (*it).second << endl; } else { // 没找到元素 cout << "没有找到元素" << endl; } // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; };
执行结果 :
找到元素: Tom 18
Press any key to continue . . .
在 std::map 关联容器 中 , 提供了 count() 成员函数 , 用于 统计容器中具有特定 键 Key 的元素的数量 ;
std::map 容器中 每个 键 Key 都是唯一的 , 因此 count() 函数对于 std::map 来说实际上 只能 返回 1 ( 找到了该键 Key ) 或 0 ( 没有找到该键 Key ) ;
std::map#count() 函数原型如下 :
size_type count(const Key& key) const;
代码示例 :
#include "iostream" using namespace std; #include "map" int main() { map<int, string> myMap; myMap[1] = "Tom"; // 统计 1 键值的个数 cout << myMap.count(1) << endl; // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; };
执行结果 :
1
Press any key to continue . . .
在 C++ 语言 的 标准模板库 ( STL , Standard Template Library ) 中 , std::map 关联容器类 提供了 lower_bound() 成员函数 , 该函数返回一个迭代器 , 指向在 有序映射 中第一个 键 Key 大于等于 给定键值的元素 ; 如果映射中不存在这样的键 Key , 则返回 尾部迭代器 ;
std::map#lower_bound 函数原型 :
iterator lower_bound(const Key& key);
代码示例 :
#include "iostream" using namespace std; #include "map" int main() { map<int, string> myMap; myMap[1] = "Blue"; myMap[2] = "Red"; myMap[4] = "Green"; myMap[5] = "Black"; myMap[6] = "White"; // 使用lower_bound() 查找第一个键 大于等于 2 的元素 map<int, string>::iterator it = myMap.lower_bound(2); if (it != myMap.end()) { // 找到了元素 std::cout << "第一个大于等于 2 的元素 : " << it->first << "\t" << it->second << std::endl; } else { // 没找到元素 std::cout << "没有找到大于等于 2 的元素" << std::endl; } // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; };
执行结果 :
第一个大于等于 2 的元素 : 2 Red
Press any key to continue . . .
在 C++ 语言 的 标准模板库 ( STL , Standard Template Library ) 中 , std::map 关联容器类 提供了 upper_bound() 成员函数 , 该函数返回一个迭代器 , 指向在 有序映射 中第一个 键 Key 大于 给定键值的元素 ; 如果映射中不存在这样的键 Key , 则返回 尾部迭代器 ;
std::map#upper_bound 函数原型 :
iterator upper_bound(const Key& key);
代码示例 :
#include "iostream" using namespace std; #include "map" int main() { map<int, string> myMap; myMap[1] = "Blue"; myMap[2] = "Red"; myMap[4] = "Green"; myMap[5] = "Black"; myMap[6] = "White"; // 使用lower_bound() 查找第一个键 大于 4 的元素 map<int, string>::iterator it = myMap.lower_bound(4); if (it != myMap.end()) { // 找到了元素 std::cout << "第一个大于 4 的元素 : " << it->first << "\t" << it->second << std::endl; } else { // 没找到元素 std::cout << "没有找到大于 4 的元素" << std::endl; } // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; };
执行结果 :
第一个大于 4 的元素 : 4 Green
Press any key to continue . . .
std::map 关联容器 类 提供了 equal_range() 成员函数 , 可以 在 有序映射 中查找等于给定键值的元素范围 , 并返回表示该 范围 的迭代器对 , 该范围是一个 前闭后开区间 ;
由于 std::map 中的 每个 键 Key 都是唯一的 , 因此 equal_range() 实际上返回的范围最多只包含一个元素 ;
在 std:multimap 中 , 该函数才有实际意义 ;
std::map#equal_range() 函数原型 :
std::pair<iterator, iterator> equal_range(const Key& key);
代码示例 :
#include "iostream" using namespace std; #include "map" int main() { map<int, string> myMap; myMap[1] = "Blue"; myMap[2] = "Red"; myMap[4] = "Green"; myMap[5] = "Black"; myMap[6] = "White"; // 使用equal_range() 查找 等于 4 的元素范围 pair<map<int, string>::iterator, map<int, string>::iterator> its = myMap.equal_range(4); if (its.first != myMap.end()) { // 找到了元素 std::cout << "找到了等于 4 的元素 : " << its.first->first << "\t" << its.first->second << std::endl; } else { // 没找到元素 std::cout << "没有找等于 4 的元素" << std::endl; } // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; };
执行结果 :
找到了等于 4 的元素 : 4 Green
Press any key to continue . . .
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。