C++ STL中的unordered_map size()

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()函数只返回实际存储的键值对数量,而不是分配的存储空间。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 教程