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 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/264215.html

(0)
上一篇 2022年6月7日 01:09
下一篇 2022年6月7日 01:09

相关推荐

发表回复

登录后才能评论