unordered_map的库函数使用
时间: 2023-11-01 07:58:18 浏览: 220
unordered_map是C++标准库中的一个容器,用于实现键值对的映射。它的库函数使用如下:
1. 插入元素:
- 使用`insert`函数插入一个键值对:`unordered_map.insert({key, value})`
- 使用`emplace`函数插入一个键值对:`unordered_map.emplace(key, value)`
- 使用`[]`操作符插入一个键值对:`unordered_map[key] = value`
2. 删除元素:
- 使用`erase`函数删除指定键的元素:`unordered_map.erase(key)`
- 使用`erase`函数删除指定迭代器指向的元素:`unordered_map.erase(iterator)`
- 使用`clear`函数清空所有元素:`unordered_map.clear()`
3. 访问元素:
- 使用`find`函数查找指定键的元素,返回一个指向该元素的迭代器:`unordered_map.find(key)`
- 使用`[]`操作符访问指定键的值:`unordered_map[key]`
4. 判断元素是否存在:
- 使用`count`函数判断指定键的元素是否存在:`unordered_map.count(key)`,如果存在返回1,不存在返回0
5. 获取容器大小:
- 使用`size`函数获取元素个数:`unordered_map.size()`
相关问题
unordered_map库函数
unordered_map是C++标准库中提供的一个容器类,用于实现键值对的存储和查找。它使用哈希表作为底层数据结构,因此在查找时具有较高的效率。
下面是一些常用的unordered_map的库函数:
1. 构造函数:
- unordered_map():默认构造函数,创建一个空的unordered_map。
- unordered_map(size_type bucket_count):创建一个具有指定bucket数量的unordered_map。
- unordered_map(size_type bucket_count, const hasher& hash):创建一个具有指定bucket数量和哈希函数的unordered_map。
- unordered_map(size_type bucket_count, const hasher& hash, const key_equal& equal):创建一个具有指定bucket数量、哈希函数和键比较函数的unordered_map。
2. 插入和访问元素:
- insert(const value_type& val):将一个键值对插入到unordered_map中。
- insert(InputIterator first, InputIterator last):将指定范围内的键值对插入到unordered_map中。
- erase(const key_type& key):删除指定键对应的元素。
- find(const key_type& key):返回指定键对应的迭代器,如果不存在则返回end()。
- operator[](const key_type& key):返回与指定键关联的值,如果不存在则会插入一个新的键值对。
3. 大小和容量:
- size():返回unordered_map中键值对的数量。
- empty():判断unordered_map是否为空。
- max_size():返回unordered_map可以容纳的最大键值对数量。
4. 迭代器:
- begin():返回指向unordered_map第一个元素的迭代器。
- end():返回指向unordered_map最后一个元素之后位置的迭代器。
以上仅列举了一部分常用的unordered_map库函数,更多函数和用法可以参考C++标准库的相关文档。
不使用unordered_map库函数
如果你不想使用`unordered_map`库函数,你可以手动维护一个数组(大小取决于要统计的字符集大小,比如ASCII字符集有128个字符)来记录字符频率。以下是一个简单的例子,展示了如何在C++中不依赖库函数完成这个任务:
```cpp
#include <iostream>
#include <cctype>
using namespace std;
const int MAX_CHAR = 128; // ASCII字符集大小
char frequency[MAX_CHAR] = {0}; // 初始化所有字符频率为0
void countChars(const string& input) {
for (char c : input) {
if (isalpha(c)) { // 检查是否为字母
c = tolower(c); // 转换为小写以便统一计数
frequency[c]++;
}
}
}
int main() {
string text = "your_text_here";
countChars(text);
// 输出字符频率
for (int i = 0; i < MAX_CHAR; ++i) {
if (frequency[i] > 0) {
cout << '\'' << static_cast<char>(i) << "\': " << frequency[i] << endl;
}
}
return 0;
}
```
在这个版本中,我们手动实现了字符频率的计算,并通过`isalpha`函数和`tolower`函数处理字符。
阅读全文