📅  最后修改于: 2023-12-03 15:29:51.248000             🧑  作者: Mango
在C++ STL中,unordered_set
是一个关联容器,即它存储的元素是按照某个特定的规则排列的,而不是按照它们在集合中出现的顺序存储。unordered_set
中的元素是唯一的,且不允许重复。
unordered_set
容器包含许多有用的函数。其中,swap()
函数就是一种非常实用的函数。
swap()
函数用于交换两个unordered_set
容器之间的内容。
它是一个类似于std::swap()
的函数,但是它是针对unordered_set
容器的。它是通过引用传递参数的,因此不需要返回值。
void swap(unordered_set& other);
其中,other
是另一个要交换的unordered_set
容器。
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<int> set1 = { 3, 5, 1, 9 };
unordered_set<int> set2 = { 2, 4, 0, 8 };
cout << "Elements of set1 before swapping: " << endl;
for (int x : set1)
cout << x << " ";
cout << endl;
cout << "Elements of set2 before swapping: " << endl;
for (int x : set2)
cout << x << " ";
cout << endl;
set1.swap(set2);
cout << "Elements of set1 after swapping: " << endl;
for (int x : set1)
cout << x << " ";
cout << endl;
cout << "Elements of set2 after swapping: " << endl;
for (int x : set2)
cout << x << " ";
cout << endl;
return 0;
}
上面的代码创建了两个unordered_set
容器:set1
和set2
。然后,打印了这两个容器中的元素。接着,使用swap()
函数交换了这两个容器的内容,并再次打印了它们的元素。
输出结果如下:
Elements of set1 before swapping:
5 9 1 3
Elements of set2 before swapping:
0 2 4 8
Elements of set1 after swapping:
0 2 4 8
Elements of set2 after swapping:
5 9 1 3
我们可以看到,在执行swap()
函数后,set1
中的所有元素都变成了set2
中的元素,而set2
中的所有元素都变成了set1
中的元素。
swap()
函数是一个非常实用的函数,它允许我们轻松地交换两个unordered_set
容器之间的内容。如果需要在两个unordered_set
之间交换大量的数据,swap()
函数可以明显提高性能,因为它只需要交换指针,而不需要复制对象。