📅  最后修改于: 2023-12-03 15:07:52.356000             🧑  作者: Mango
在C++ STL中,swap()
是一个函数模板,用于交换两个值。STL中有很多容器和算法都使用swap()
函数来实现数据交换,例如std::sort()
函数中使用了std::swap()
来进行元素交换。swap()
函数通常比直接赋值更快,因为它只涉及到了指针的交换。
template <typename T>
void swap(T& a, T& b);
swap()
函数接受两个参数,类型为模板参数T
的引用。
#include <iostream>
#include <vector>
int main() {
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = {4, 5, 6};
std::swap(v1, v2);
for (int i : v1) {
std::cout << i << " ";
}
std::cout << std::endl;
for (int i : v2) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
输出:
4 5 6
1 2 3
swap()
函数将会把两个参数交换,因此它对参数的任何引用或指针都可能失效。swap()
函数能够正确工作,需要在类中重载operator=
和operator==
运算符。std::swap()
函数代替::swap()
函数。std::swap()
使用了一些优化和类型萃取技术,因此通常比::swap()
更高效。swap()
是一个十分实用的函数模板,在C++ STL中被广泛使用。通过使用swap()
函数,程序员可以更方便地实现数据交换,并且更容易编写高效的代码。在使用swap()
函数时,必须注意交换后参数的指针和引用判断。