📅  最后修改于: 2023-12-03 15:23:22.462000             🧑  作者: Mango
在C++中,STL(标准模板库)是一个非常强大的库,包含了各种数据结构和算法,可以大大简化程序员的工作。其中,unordered_map是一个非常有用的数据结构,其提供了一个哈希表(hash table)的实现,可以在常数时间内实现查找和插入操作,非常适合处理大量数据。本文将为你介绍如何在C++ STL中找到unordered_map,并且给出一些使用示例。
unordered_map定义在<unordered_map>头文件中,可以通过以下方式引入:
#include <unordered_map>
在引入头文件后,就可以使用unordered_map了。
unordered_map定义了一个哈希表,可以存储键值对。在unordered_map中,键(key)和值(value)可以是任意类型,只要满足以下要求:
unordered_map的一些常用方法如下:
可以使用insert()方法插入元素,插入的元素是一个pair类型的对象,其中first表示键,second表示值。例如:
unordered_map<string, int> umap; // 定义unordered_map
umap.insert(make_pair("apple", 1)); // 向umap中插入键为"apple",值为1的元素
可以使用find()方法查找元素,返回一个迭代器(iterator)。
unordered_map<string, int>::iterator iter = umap.find("apple"); // 查找键为"apple"的元素
if (iter != umap.end()) { // 如果找到了元素
cout << iter->second << endl; // 输出值
}
可以使用erase()方法删除元素,需要传入要删除的键作为参数。
umap.erase("apple"); // 删除键为"apple"的元素
可以使用范围for循环遍历unordered_map,如下所示:
unordered_map<string, int> umap;
umap.insert(make_pair("apple", 1));
umap.insert(make_pair("banana", 2));
for (auto p: umap) { // p是一个pair类型的对象,其中first表示键,second表示值
cout << p.first << " " << p.second << endl;
}
以下是一个完整的使用unordered_map的示例,实现了一个单词计数器:
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int main() {
unordered_map<string, int> wordCount; // 定义unordered_map
string word; // 定义一个字符串变量
while (cin >> word) { // 读入单词
++wordCount[word]; // 将单词插入unordered_map中,并且计数器加1
}
for (auto p: wordCount) { // 遍历unordered_map
cout << p.first << " " << p.second << endl;
}
return 0;
}
unordered_map是C++ STL中一个非常有用的数据结构,可以大大简化程序员的工作。在使用unordered_map时,需要注意键的唯一性和如何遍历unordered_map。希望本文能够对你有所帮助。