📜  C++ STL中的unordered_set swap()函数(1)

📅  最后修改于: 2023-12-03 15:29:51.248000             🧑  作者: Mango

C++ STL中的unordered_set swap()函数

在C++ STL中,unordered_set是一个关联容器,即它存储的元素是按照某个特定的规则排列的,而不是按照它们在集合中出现的顺序存储。unordered_set中的元素是唯一的,且不允许重复。

unordered_set容器包含许多有用的函数。其中,swap()函数就是一种非常实用的函数。

unordered_set swap()函数的定义

swap()函数用于交换两个unordered_set容器之间的内容。

它是一个类似于std::swap()的函数,但是它是针对unordered_set容器的。它是通过引用传递参数的,因此不需要返回值。

void swap(unordered_set& other);

其中,other是另一个要交换的unordered_set容器。

unordered_set swap()函数的用法
#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容器:set1set2。然后,打印了这两个容器中的元素。接着,使用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()函数可以明显提高性能,因为它只需要交换指针,而不需要复制对象。