cpp unordered_map的常用方法
时间: 2023-10-27 20:42:35 浏览: 80
`std::unordered_map` 是C++11引入的一种关联容器,它类似于 `std::map`,但使用哈希表而不是红黑树来实现。下面是一些常用的方法和操作:
- `insert()`:插入一个键值对,返回值为一个 `std::pair` 对象,其中 `first` 为迭代器指向新插入的元素,`second` 为一个布尔值,表示是否插入成功。
- `erase()`:删除一个元素,可以接受一个迭代器、一个指向元素的键或一个元素的范围作为参数。
- `find()`:查找一个键是否在映射表中,如果找到返回该键对应的迭代器,否则返回 `end()` 迭代器。
- `at()`:访问一个键对应的值,如果键不存在,则会抛出 `std::out_of_range` 异常。
- `operator[]`:访问一个键对应的值,如果键不存在,则会自动插入一个键值对,值为默认值。
- `size()`:返回映射表中元素的个数。
- `empty()`:判断映射表是否为空。
- `clear()`:清空映射表中的所有元素。
另外,可以通过迭代器遍历 `std::unordered_map` 中的元素,类似于遍历 `std::vector`。
相关问题
cpp unordered_map
C++ 中的 `unordered_map` 是一个哈希表实现的关联容器,它提供了类似于 `map` 的键值对存储和查找功能,但是由于采用了哈希表来实现,所以查找的效率更高,而且不保证元素按照键的大小顺序排列。
使用 `unordered_map` 需要包含头文件 `<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;
std::cout << "The value of apple is " << myMap["apple"] << std::endl;
std::cout << "The value of banana is " << myMap["banana"] << std::endl;
std::cout << "The value of orange is " << myMap["orange"] << std::endl;
return 0;
}
```
上述代码创建了一个 `unordered_map` 对象 `myMap`,并向其中插入了三个键值对。接着通过 `myMap["apple"]`、`myMap["banana"]` 和 `myMap["orange"]` 访问了对应键的值。输出结果为:
```
The value of apple is 1
The value of banana is 2
The value of orange is 3
```
c++ unordered_map 常用函数
unordered_map 是 C++ STL 中的一个关联容器,用于存储键值对,其内部实现是基于哈希表。
下面是 unordered_map 的一些常用函数:
1. `insert`:插入键值对或列表。
```cpp
unordered_map<int, string> myMap;
myMap.insert({1, "apple"});
myMap.insert(make_pair(2, "banana"));
```
2. `erase`:删除指定键的键值对。
```cpp
myMap.erase(1);
```
3. `find`:查找指定键对应的迭代器,若不存在则返回 end()。
```cpp
auto itr = myMap.find(2);
if (itr != myMap.end()) {
// found
cout << itr->second << endl; // 输出 banana
}
```
4. `at`:访问指定键对应的值,若不存在则抛出异常。
```cpp
cout << myMap.at(2) << endl; // 输出 banana
```
5. `size`:返回键值对的数量。
```cpp
cout << myMap.size() << endl;
```
6. `empty`:判断容器是否为空。
```cpp
if (myMap.empty()) {
// container is empty
}
```
7. `clear`:清空容器中的所有键值对。
```cpp
myMap.clear();
```
这些是 unordered_map 的一些常用函数,还有其他函数可供使用,具体可以参考 C++ STL 的文档。
阅读全文