📜  在C++ STL中设置:: swap()(1)

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

在C++ STL中设置:: swap()

介绍

在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==运算符。
  • 若你使用的是C++11或更高版本的标准,请使用std::swap()函数代替::swap()函数。std::swap()使用了一些优化和类型萃取技术,因此通常比::swap()更高效。
总结

swap()是一个十分实用的函数模板,在C++ STL中被广泛使用。通过使用swap()函数,程序员可以更方便地实现数据交换,并且更容易编写高效的代码。在使用swap()函数时,必须注意交换后参数的指针和引用判断。