C++ STL中的unordered_multimap empty()函数
在C++ STL中,unordered_multimap
是一个无序的关联容器类型。它允许用户在常数时间内执行插入和查找操作。empty()
函数是unordered_multimap
类中的一个函数,用于判断该容器是否为空。本文将详细介绍unordered_multimap
的empty()
函数及其用法。
unordered_multimap
的定义
在讲解empty()
函数之前,我们先来了解一下unordered_multimap
的定义。
unordered_multimap
是一个存储键-多个值的无序容器,它使用哈希表来实现。与multimap
不同,unordered_multimap
中的元素是无序的,因此不能根据元素位置来访问它们。但可以根据键值来访问元素。
以下是unordered_multimap
的定义:
“` c++
template < class Key, // unordered_multimap::key_type
class T, // unordered_multimap::mapped_type
class Hash = hash
class Pred = equal_to
class Alloc = allocator
class unordered_multimap;
其中,`Key`表示键类型,`T`表示值类型,`Hash`表示哈希函数类型,`Pred`表示键的比较函数,`Alloc`表示分配器类型。
例如,以下代码定义了一个存储int类型键和string类型值的`unordered_multimap`:
``` c++
#include <unordered_map>
#include <string>
using namespace std;
int main() {
unordered_multimap<int, string> ummap;
return 0;
}
</code></pre>
<h2><code>empty()</code>函数的定义</h2>
<code>empty()</code>函数是用于判断<code>unordered_multimap</code>容器是否为空的函数。如果容器为空,则返回true,否则返回false。
以下是<code>unordered_multimap</code>中<code>empty()</code>函数的定义:
``` c++
bool empty() const noexcept;
## `empty()`函数的使用
在使用`empty()`函数之前,需要先创建一个`unordered_multimap`容器。以下是一个示例:
``` c++
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int main() {
unordered_multimap<int, string> ummap = {{1, "one"}, {2, "two"}, {2, "second"}};
return 0;
}
</code></pre>
以上代码创建了一个包含三个元素的<code>unordered_multimap</code>容器,其中键值对分别为(1,"one")、(2,"two")和(2,"second")。
接下来,我们可以通过<code>empty()</code>函数来判断容器是否为空。以下是一个示例:
``` c++
#include
#include
#include
using namespace std;
int main() {
unordered_multimap<int, string> ummap = {{1, "one"}, {2, "two"}, {2, "second"}};
if (ummap.empty()) {
cout << "The unordered_multimap is empty." << endl;
} else {
cout << "The unordered_multimap is not empty." << endl;
}
return 0;
}
输出为:
```bash
The unordered_multimap is not empty.
</code></pre>
以上代码使用<code>empty()</code>函数判断<code>ummap</code>是否为空,并输出结果。
如果我们将<code>ummap</code>容器中的元素全部删除,再次使用<code>empty()</code>函数,输出将为:
``` c++
#include
#include
#include
using namespace std;
int main() {
unordered_multimap<int, string> ummap = {{1, "one"}, {2, "two"}, {2, "second"}};
ummap.clear();
if (ummap.empty()) {
cout << "The unordered_multimap is empty." << endl;
} else {
cout << "The unordered_multimap is not empty." << endl;
}
return 0;
}
输出为:
```bash
The unordered_multimap is empty.
以上代码使用clear()
函数将ummap
中的元素全部删除,再使用empty()
函数判断ummap
是否为空,并输出结果。
结论
empty()
函数是unordered_multimap
类中判断容器是否为空的函数。如果容器为空,则返回true,否则返回false。使用empty()
函数可以方便地判断unordered_multimap
容器是否为空,从而进行相应的处理。