赞
踩
在std::map
中查找元素可以通过几种不同的方式完成,但最常用的方法是使用find
成员函数。std::map
是一个基于键值对的关联容器,其中每个元素都是一个键值对。键是唯一的,并且用于排序和快速查找。
find
成员函数find
成员函数接受一个键作为参数,并返回一个迭代器,指向第一个与给定键相匹配的元素。如果没有找到元素,则返回end()
迭代器。
下面是一个简单的例子,展示了如何在std::map
中使用find
来查找元素:
cpp复制代码
#include <iostream> | |
#include <map> | |
int main() { | |
std::map<int, std::string> myMap; | |
// 向map中添加一些元素 | |
myMap[1] = "one"; | |
myMap[2] = "two"; | |
myMap[3] = "three"; | |
// 查找键为2的元素 | |
auto it = myMap.find(2); | |
if (it != myMap.end()) { | |
// 如果找到了,输出对应的值 | |
std::cout << "Found: " << it->second << std::endl; | |
} else { | |
// 如果没有找到 | |
std::cout << "Not found" << std::endl; | |
} | |
return 0; | |
} |
at
成员函数(可能会抛出异常)虽然at
成员函数不是专门用于查找的(它主要用于访问元素),但如果你尝试访问的键不存在,它会抛出一个std::out_of_range
异常。因此,它也可以间接用于查找元素是否存在,但这种方式通常不推荐用于仅检查元素是否存在的场景,因为它涉及到异常处理,可能会影响性能。
cpp复制代码
try { | |
std::string value = myMap.at(4); // 尝试访问键为4的元素 | |
std::cout << "Found: " << value << std::endl; | |
} catch (const std::out_of_range& e) { | |
std::cout << "Not found: " << e.what() << std::endl; | |
} |
count
成员函数(不推荐)std::map
不允许有重复键,因此count
成员函数对于std::map
来说总是返回0(如果键不存在)或1(如果键存在)。虽然理论上可以用来检查键是否存在,但这不是count
的常用或推荐用法,因为它不如find
直接或高效。
cpp复制代码
if (myMap.count(2) > 0) { | |
// 键存在 | |
auto it = myMap.find(2); | |
std::cout << "Found: " << it->second << std::endl; | |
} |
对于std::map
,推荐使用find
成员函数来查找元素。它直接、高效,并且不会因为键不存在而抛出异常。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。