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

这个 交换 是用于交换给定值的通用函数,而 std::vector::swap 是一个专门的函数,可以交换两个不同向量容器的所有内容。 以下是std::swap和std::vector::swap之间的一些主要区别,

null
交换 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 for container适配器的重载是在C++11中引入的。C++的以前版本将需要线性时间复杂度来交换向量 std::vector::swap函数将始终以固定时间交换vector的内容。

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

方案1 :使用std::swap()演示两个向量的交换。

CPP

// 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 << "Vector 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

// 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 << "Vector v2 = " ;
for ( int i = 0; i < 3; i++) {
cout << v2[i] << " " ;
}
return 0;
}


输出:

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

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享