std swap()和std vector swap()的区别

std swap()和std vector swap()的区别

std::swap 是用于交换给定值的通用函数,而 std::vector::swap 是可以交换两个不同向量容器的所有内容的专用函数。

以下是 std::swapstd::vector::swap 之间的一些主要区别:

std::swap std::vector::swap
std::swap() 是 C++ STL 中的内置函数,它交换作为参数传递给它的任何两个变量的值。 std::vector::swap() 函数用于将一个向量的全部内容与另一个相同类型的向量交换。
如果 std::swap() 函数用于交换两个向量 A 和 B,它将为 std::vector 调用专门的 std::swap 算法,该算法又调用 A.swap(B) 并交换内容。 std::vector::swap() 函数将一个向量的内容与另一个向量交换。 它交换两个向量的地址(即容器交换对其数据的引用),而不是在恒定时间 O(1) 内逐个交换每个元素。
容器适配器的 std::swap() 重载是在 C++11 中引入的。 先前版本的 C++ 将需要线性时间复杂度来交换向量 std::vector::swap() 函数将始终在恒定时间内交换向量的内容。

实际上,这两个函数都将在 O(1) 时间内交换向量的内容并提供相同的性能。 为了一致性,最好使用 std::swap()

程序 1 :说明使用 std::swap() 交换两个向量。

// CPP program to illustrate swapping
// of two vectors using std::swap()

#include <bits/stdc++.h>
using namespace std;

int main()
{
    vector<int> v1 = { 1, 2, 3 };
    vector<int> v2 = { 4, 5, 6 };

    // swapping the above two vectors
    // by traversing and swapping each element
    for (int i = 0; i < 3; i++) {
        swap(v1[i], v2[i]);
    }

    // print vector v1
    cout << "Vector v1 = ";
    for (int i = 0; i < 3; i++) {
        cout << v1[i] << " ";
    }

    // print vector v2
    cout << "\nVector v2 = ";
    for (int i = 0; i < 3; i++) {
        cout << v2[i] << " ";
    }

    return 0;
}

运行结果:

Vector v1 = 4 5 6 
Vector v2 = 1 2 3

程序2 :说明使用 std::vector::swap() 交换两个向量。

// CPP program to illustrate swapping
// of two vectors using std::vector::swap()

#include <bits/stdc++.h>
using namespace std;

int main()
{
    vector<int> v1 = { 1, 2, 3 };
    vector<int> v2 = { 4, 5, 6 };

    // swapping the above two vectors
    // using std::vector::swap
    v1.swap(v2);

    // print vector v1
    cout << "Vector v1 = ";
    for (int i = 0; i < 3; i++) {
        cout << v1[i] << " ";
    }

    // print vector v2
    cout << "\nVector v2 = ";
    for (int i = 0; i < 3; i++) {
        cout << v2[i] << " ";
    }

    return 0;
}

运行结果:

Vector v1 = 4 5 6 
Vector v2 = 1 2 3

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程