📜  在C++ STL中找到unordered_map(1)

📅  最后修改于: 2023-12-03 15:23:22.462000             🧑  作者: Mango

在C++ STL中找到unordered_map

在C++中,STL(标准模板库)是一个非常强大的库,包含了各种数据结构和算法,可以大大简化程序员的工作。其中,unordered_map是一个非常有用的数据结构,其提供了一个哈希表(hash table)的实现,可以在常数时间内实现查找和插入操作,非常适合处理大量数据。本文将为你介绍如何在C++ STL中找到unordered_map,并且给出一些使用示例。

找到unordered_map

unordered_map定义在<unordered_map>头文件中,可以通过以下方式引入:

#include <unordered_map>

在引入头文件后,就可以使用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"的元素
遍历unordered_map

可以使用范围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。希望本文能够对你有所帮助。