當前位置:編程學習大全網 - 編程軟體 - SWAP函數

SWAP函數

swap函數,作用是交換兩個元素的值,以STL的源代碼為例:

template <class T> void swap ( T& a, T& b )

{

T c(a); a=b; b=c;

}

代碼很簡單,推薦使用STL

algorithm中的swap函數而不要自己寫swap函數,因為STL的swap函數有很強的通用性,它基本可以交換任意類型的元素(包括vector,list……)。

看壹個例題:給兩個數組,交換這兩個數組的元素,並打印:

#include <iostream>

#include <cstdio>

#include <algorithm>

#include <vector>

using namespace std;

void myprint(int

&num){cout<<num<<"

";}

int main()

{

vector

<int> A,B;

int

n,m;

cin>>n;

for(int

i=0;i<n;i++)

{

int t;

cin>>t;

A.push_back(t);

}

cin>>m;

for(int

i=0;i<m;i++)

{

int

t;cin>>t;

B.push_back(t);

}

swap(A,B);

for_each(A.begin(),A.end(),myprint);cout<<endl;

for_each(B.begin(),B.end(),myprint);cout<<endl;

return

0;

}

swap函數可以直接交換兩個vector的值,其實是這樣的:vector向量中重載了=操作符號,vector和vector之間可以直接賦值。

但是swap函數有壹個缺點,就是無法交換2個叠代器的值,想要交換壹個string中的兩個要這麽寫的:

交換pos1和pos2兩個位置的值。

string str;

int pos1,pos2;

cin>>str>>pos1>>pos2;

swap(str.begin()+pos1,str.begin()+pos2);

但是CE了,說明swap函數不能交換iterator。

註意:swap函數只能交換兩個相同類型的值。

  • 上一篇:大俠們,delphi7如何編寫壹個讀取以逗號隔開的數到數據庫啊?
  • 下一篇:自制葉羅麗卡片教程
  • copyright 2024編程學習大全網