📅  最后修改于: 2023-12-03 14:59:46.178000             🧑  作者: Mango
C++ STL(标准模板库)提供了一个名为std::set
的容器,它是一个有序的集合,其中每个元素都是唯一的。std::set
内部使用平衡二叉树(红黑树)实现,因此插入、删除和查找操作的时间复杂度都是O(log n)。
std::set
类还提供了一个有用的成员函数swap()
,用于交换两个set对象的内容。
下面是std::set
的swap()
函数的语法:
void swap(std::set<Key, Compare, Allocator>& set);
其中,Key
是元素的类型,Compare
是比较函数的类型,Allocator
是分配器的类型。这里的std::set
是指要交换内容的set对象。
set
:要交换内容的另一个set对象。swap()
函数是一个无返回值的操作。
下面是一个示例,展示了如何使用swap()
函数交换两个set对象的内容:
#include <iostream>
#include <set>
int main() {
std::set<int> set1 = {1, 2, 3};
std::set<int> set2 = {4, 5, 6};
// 打印交换前的set对象
std::cout << "set1: ";
for (const auto& element : set1) {
std::cout << element << " ";
}
std::cout << std::endl;
std::cout << "set2: ";
for (const auto& element : set2) {
std::cout << element << " ";
}
std::cout << std::endl;
// 交换set对象的内容
set1.swap(set2);
// 打印交换后的set对象
std::cout << "set1: ";
for (const auto& element : set1) {
std::cout << element << " ";
}
std::cout << std::endl;
std::cout << "set2: ";
for (const auto& element : set2) {
std::cout << element << " ";
}
std::cout << std::endl;
return 0;
}
输出:
set1: 1 2 3
set2: 4 5 6
set1: 4 5 6
set2: 1 2 3
在上面的示例中,我们使用swap()
函数交换了两个set对象set1
和set2
的内容。
通过使用std::set
的swap()
函数,程序员可以方便地交换两个set对象的内容,这在某些情况下可能是很有用的。注意,swap()
函数只交换set对象的内容,不会交换它们的比较函数或分配器。