C++ STL中的multiset的clear()函数
概述
multiset
是C++ STL (Standard Template Library)中的容器之一,它可用于存储元素,它们按照一定的有序方式排序。与 set
相比,multiset
中的元素是可以重复的。这意味着,如果要存储多个具有相同值的元素,则可以使用 multiset
。
multiset
中的 clear()
函数用于清除元素并释放内存资源。在本文中,我们将详细讨论 multiset
中的 clear()
函数如何工作以及如何在代码中使用它。
代码示例
让我们看看一个包含元素的简单 multiset
对象,并使用 clear()
函数清除其中的元素。以下C++代码演示了如何使用 clear()
函数清除对象mySet
中的所有元素。
#include <iostream>
#include <set>
using namespace std;
int main()
{
multiset<int> mySet = { 3, 0, 7, 2, 5, 6, 8, 1, 9, 4 };
cout << "multiset Before clear() :";
for (auto const &i : mySet)
{
cout << i << " ";
}
cout << "\n";
mySet.clear();
cout << "multiset After clear() :";
for (auto const &i : mySet)
{
cout << i << " ";
}
cout << "\n";
return 0;
}
输出如下:
multiset Before clear() :0 1 2 3 4 5 6 7 8 9
multiset After clear() :
从输出结果可以看出,在调用 clear()
函数后,所有元素从 multiset
对象中都被删除了。
函数语法
clear()
函数的函数语法如下:
void clear();
函数说明
multiset
的 clear()
函数用于删除容器中所有元素。clear()
不会释放未使用的内存,只是将 multiset
对象的大小设置为0。调用此函数后,multiset
对象不会被销毁。
如何使用 clear()
函数?
我们已经讨论了多种使用 clear()
函数的情况。迭代器也是 clear()
函数的一种常见使用情况。在下面的示例中,我们将演示如何使用迭代器删除 multiset
对象 mySet
中的元素,并使用 clear()
函数清空这个对象。
#include <iostream>
#include <set>
using namespace std;
int main()
{
multiset<int> mySet = { 3, 5, 7, 9, 5 ,6};
auto iter = mySet.find(5);
while (iter != mySet.end())
{
mySet.erase(iter++);
iter = mySet.find(5);
}
cout << "After erase(5): ";
for (auto const &i : mySet)
{
cout << i << " ";
}
cout << endl;
mySet.clear();
cout << "After clear(): ";
for (auto const &i : mySet)
{
cout << i << " ";
}
cout << endl;
return 0;
}
在上面的代码中,我们使用迭代器 iter
查找并删除 mySet
对象中所有值为5的元素。在 iter
不是 end()
迭代器时,使用 multiset
对象的 erase()
函数删除匹配项。删除后,把 iter
移动到下一个迭代器中。这个步骤重复,直到所有的匹配项都被删除为止。
最后,使用 clear()
函数清除 multiset
对象中的所有元素,这将把 multiset
对象的大小设置为0。
结论
multiset的clear()
函数是一个有用的函数,用于清除 multiset
对象中的所有元素。它不会销毁对象,并且只是将元素的数量设置为0。此函数的使用极为简单,只需调用 multiset
对象的 clear()
函数即可。除了上文中的示例外,您还可以随时在您的代码中使用 multiset
的 clear()
函数。