std::unordered_map<std::string,std::string>
时间: 2024-05-02 19:14:30 浏览: 17
std::unordered_map<std::string, std::string>是C++标准库中的一个容器,用于存储键值对。是一个哈希表实现的关联容器,可以根据键快速查找对应的值。其中,键和值都是字符串类型。
unordered_map使用哈希函数将键映射到桶中,以实现快速的查找和插入操作。它的插入、删除和查找操作的平均时间复杂度都是常数级别的,即O(1)。
unordered_map中的键是唯一的,每个键只能对应一个值。如果插入了重复的键,则新值会覆盖旧值。
unordered_map提供了丰富的成员函数和操作符重载,可以方便地进行元素的插入、删除、查找和遍历等操作。
相关问题
std::vector std::unordered_map的区别
std::vector和std::unordered_map是C++标准库中的两种不同类型的容器,它们有以下区别:
1. 数据结构:
- std::vector是一个动态数组,它在内存中以连续的方式存储元素。这使得std::vector支持随机访问,即可以通过索引快速访问任何元素。
- std::unordered_map是一个哈希表,它使用哈希函数将键映射到存储桶中。这使得std::unordered_map支持通过键快速查找值,但不支持随机访问。
2. 插入和删除操作:
- std::vector在尾部插入和删除元素的时间复杂度为O(1),但在中间或开头插入和删除元素的时间复杂度为O(n)。
- std::unordered_map在插入和删除元素时的平均时间复杂度为O(1)。
3. 元素的顺序:
- std::vector中的元素按照它们被插入的顺序进行存储,并且可以通过索引进行访问。
- std::unordered_map中的元素没有特定的顺序,它们根据哈希函数的结果进行存储。
4. 内存占用:
- std::vector在内存中以连续的方式存储元素,因此它的内存占用比较紧凑。
- std::unordered_map使用哈希表来存储元素,因此它的内存占用可能比较大。
下面是一个演示std::vector和std::unordered_map的例子:
```cpp
#include <iostream>
#include <vector>
#include <unordered_map>
int main() {
// 使用std::vector存储整数
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用std::unordered_map存储键值对
std::unordered_map<std::string, int> map = {{"apple", 1}, {"banana", 2}, {"orange", 3}};
// 访问std::vector中的元素
std::cout << "Vector element at index 2: " << vec[2] << std::endl;
// 访问std::unordered_map中的元素
std::cout << "Value of 'banana': " << map["banana"] << std::endl;
return 0;
}
```
std::unordered_map
std::unordered_map是C++标准库中的一个关联容器,它可以存储一组键值对,并且支持快速的查找、插入和删除操作。
以下是一个使用std::unordered_map的示例代码:
```cpp
#include <unordered_map>
#include <iostream>
int main() {
std::unordered_map<int, std::string> umap;
// 插入键值对
umap.insert(std::make_pair(1, "apple"));
umap.insert(std::make_pair(2, "banana"));
umap.insert(std::make_pair(3, "orange"));
// 查找键值对
int key = 2;
auto it = umap.find(key);
if (it != umap.end()) {
std::cout << "Key " << key << " found, value is " << it->second << std::endl;
} else {
std::cout << "Key " << key << " not found" << std::endl;
}
// 删除键值对
umap.erase(3);
// 遍历键值对
for (const auto& pair : umap) {
std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
}
return 0;
}
```
这段代码创建了一个std::unordered_map对象umap,插入了三个键值对,然后通过find函数查找指定的键值对,最后删除了一个键值对,并遍历输出了所有的键值对。