std::swap和std::vector::swap之间的区别

std::swap和std::vector::swap之间的区别

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

下面是std::swap和std::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 };
 
    //遍历和交换每个元素以交换上述两个向量
    for (int i = 0; i < 3; i++) {
        swap(v1[i], v2[i]);
    }
 
    //打印向量v1
    cout << "Vector v1 = ";
    for (int i = 0; i < 3; i++) {
        cout << v1[i] << " ";
    }
 
    //打印向量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 };
 
    //使用std::vector::swap交换上述两个向量
    v1.swap(v2);
 
    //打印向量v1
    cout << "Vector v1 = ";
    for (int i = 0; i < 3; i++) {
        cout << v1[i] << " ";
    }
 
    //打印向量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教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程