unordered_map find
时间: 2023-04-28 22:05:53 浏览: 90
unordered_map 是 C++ 中 STL 的一种,它是一种无序关联式容器。可以使用 find() 函数来查找 unordered_map 中是否存在某个元素。如果存在,则返回该元素的迭代器;如果不存在,则返回 unordered_map::end()。例如:
```
unordered_map<string, int> myMap;
myMap["apple"] = 100;
myMap["banana"] = 200;
unordered_map<string, int>::iterator it = myMap.find("apple");
if (it != myMap.end()) {
cout << "Found: " << it->first << " " << it->second << endl;
} else {
cout << "Not found" << endl;
}
```
相关问题
C++ unordered_map find
C++的unordered_map类中的find方法是用来在哈希表中查找给定键的元素的。它返回一个迭代器,指向所找到的元素,如果元素不存在,则返回unordered_map的end迭代器。unordered_map的find方法的时间复杂度是常数时间O(1)。
下面是unordered_map类的find方法的定义:
template < class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, class Alloc = allocator< pair<const Key,T> > >
iterator find (const Key& k);
其中,Key是键的类型,T是值的类型,Hash是哈希函数,默认是hash<Key>,Pred是比较函数,默认是equal_to<Key>,Alloc是分配器,默认是allocator< pair<const Key,T> >。
对于基本类型如int、char、long和string等作为键和值,STL提供了默认的哈希函数和比较函数。但是对于自定义的类,需要自己定义哈希函数和比较函数。哈希函数用于将键转换为哈希值,比较函数用于比较键的相等性。可以根据具体的需求实现自定义的哈希函数和比较函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [C++ unordered_map](https://blog.csdn.net/m0_67393619/article/details/124503669)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
unordered_map find函数
unordered_map 的 find() 函数用于在容器中查找指定的键,并返回一个指向该键值对的迭代器。如果找到了指定的键,则返回指向该键值对的迭代器;如果未找到,则返回指向 unordered_map 结尾的迭代器(即 end() 迭代器)。
下面是使用 find() 函数在 unordered_map 中查找键的示例代码:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> myMap;
myMap["apple"] = 1;
myMap["banana"] = 2;
myMap["orange"] = 3;
// 使用 find() 函数查找键为 "banana" 的键值对
auto it = myMap.find("banana");
if (it != myMap.end()) {
std::cout << "找到了键为 'banana' 的键值对,值为:" << it->second << std::endl;
} else {
std::cout << "未找到键为 'banana' 的键值对" << std::endl;
}
// 使用 find() 函数查找不存在的键
auto it2 = myMap.find("grape");
if (it2 != myMap.end()) {
std::cout << "找到了键为 'grape' 的键值对,值为:" << it2->second << std::endl;
} else {
std::cout << "未找到键为 'grape' 的键值对" << std::endl;
}
return 0;
}
```
在上述示例代码中,我们创建了一个 unordered_map,并向其中插入了三对键值对。然后,我们使用 find() 函数分别查找键为 "banana" 和 "grape" 的键值对。通过判断迭代器是否等于 end() 迭代器,我们可以确定是否找到了指定的键。
注意,find() 函数的时间复杂度是 O(1),即常数时间复杂度。因为 unordered_map 使用哈希表实现,可以通过哈希函数快速定位键值对。
阅读全文