├─◆ 狼盟首页 > 查看贴子 > 详细信息
楼主
[讨论]请高手指点vector中的swap()

//帮忙理解vector中的全局域中的swap()函数。//感觉上swap()函数只是交换两个容器的地址。可是……往下看^_^!///////这个好理解#include<iostream>#include<vector>#include<cstdlib>using namespace std; int main() { vector<int> vec1,vec2; int i; for (i=0;i<10;i++) vec1.push_back(i); for (i=9;i>=1;i--) vec2.push_back(i); cout<<"&vec1.begin()="<<&vec1[0]<<endl; cout<<"&vec2.begin()="<<&vec2[0]<<endl; cout<<"----------------------------------------
"; swap(vec1,vec2); //我知道这个只是交换指针而已。 cout<<"&vec1.begin()="<<&vec1[0]<<endl; cout<<"&vec2.begin()="<<&vec2[0]<<endl; cout<<"----------------------------------------
"; system("pause"); return 0;} ///////////////////////////////////////////////////////////////////来看下面这个?#include<iostream>#include<vector>#include<cstdlib>#include<algorithm>using namespace std; void pShow(const vector<int> &vec) { cout<<"-------------------------------
"; for (int i=0;i<vec.size();i++) cout<<&vec[i]<<endl; cout<<"
------------------------------
";} void show(int bl) { cout<<bl;} int main() { vector<int> vec1; int i; for (i=0;i<10;i++) vec1.push_back(i); for_each(vec1.begin(),vec1.end(),show); cout<<endl; pShow(vec1); swap(vec1[5],vec1[9]); //我觉得这个swap已经借用第三变量来交换两个数字了。//////////////////////////////你觉得呢??? for_each(vec1.begin(),vec1.end(),show); cout<<endl; pShow(vec1); system("pause"); return 0;}