C++ STL中的unordered_map size()
在C++ STL中,unordered_map是一个非常重要的数据结构,用于实现键值对的映射。它是基于哈希表的实现,因此具有快速的查找和插入速度。在使用unordered_map时,经常会遇到需要获取其大小的情况。本文将重点介绍unordered_map的size()函数,帮助大家更好地使用该数据结构。
unordered_map概述
unordered_map是C++ STL中的容器,用于实现键值对的映射。它具有以下特点:
- 基于哈希表实现,具有快速的查找和插入速度
- 支持随机访问、插入、删除操作
- 不会自动排序,因此遍历顺序与插入顺序不一定相同
- 标准库的hash函数会根据键的类型生成一个哈希码,用于快速查找键值对
unordered_map的定义方式如下:
#include <unordered_map>
unordered_map<键类型, 值类型> map_name;
例如:
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_map<string, int> mp;
mp["one"] = 1;
mp["two"] = 2;
mp["three"] = 3;
cout << mp["two"] << endl; // 输出2
return 0;
}
size()函数
size()函数用于获取unordered_map中键值对的数量,其定义如下:
size_t size() const noexcept;
该函数返回unordered_map中元素的数量,因此我们可以通过调用size()函数来判断unordered_map是否为空,或者获取它的大小。
示例代码如下:
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_map<string, int> mp;
mp["one"] = 1;
mp["two"] = 2;
mp["three"] = 3;
cout << mp.size() << endl; // 输出3
if (mp.empty()) {
cout << "unordered_map is empty" << endl;
}
else {
cout << "unordered_map is not empty" << endl;
}
return 0;
}
注意事项
在unordered_map中,size()函数的时间复杂度为O(1),因此同样的代码,在unordered_map中的性能比在map中的性能更好。在实际使用时,应该根据需要选择相应的容器。
此外,需要注意的是,在使用size()函数时,我们可以得到unordered_map中键值对的数量,而不是实际分配的空间数量。因此,与vector等容器不同,unordered_map的size()函数不会返回异常大的数量,即使其中大部分存储空间没有被使用。
结论
size()函数是unordered_map中非常重要的一个函数,它用于获取unordered_map中键值对的数量。因为它的时间复杂度为O(1),因此常用于判断unordered_map是否为空或获取其大小。在使用时,我们应该根据需要选择相应的容器,并且注意size()函数只返回实际存储的键值对数量,而不是分配的存储空间。