std::swap和std::vector::swap之间有什么区别?

2021年3月30日12:30:56 发表评论 3,750 次浏览

std::swap函数用于交换两个元素, 其中std::vector::swap函数可以交换两个不同向量容器的所有元素。

以下是std::swap和std::vector::swap之间的一些主要关键区别,

std::swap std::vector::swap
std::swap()是C++ STL中的内置函数, 它交换作为参数传递给它的任何两个变量的值。 std::vector::swap()函数用于将一个向量的全部内容与相同类型和大小的另一个向量交换。
比较而言, std::swap()比std::vector::swap()函数要慢。 比较而言, std::vector::swap()比std::swap()函数要快。
如果std::swap()函数用于交换两个向量, 则将花费O(n)的时间, 因为它将一个向量交换两个向量的元素。 std::vector::swap函数比普通的swap函数要快, 因为它交换两个向量的地址(即容器交换对其数据的引用), 而不是像在固定时间O中一一交换每个元素( 1)。

程序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

被认为是行业中最受欢迎的技能之一, 我们拥有自己的编码基础C++ STL通过激烈的问题解决过程来训练和掌握这些概念。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: