//by 鳥哥 vector 拷貝的三種方式
//有疑問請留言或加羣 1032082534
#include<iostream>
#include<vector>
using namespace std;
void printVector(vector<int>& vec)
{
for(auto val:vec)
{
cout<<val<<" ";
}
cout<<endl;
return;
}
int main()
{
std::vector<int> vec{11,22,33,44,55};
//1、拷貝初始化
cout<<"1、拷貝初始化:"<<endl;
std::vector<int> copyInit(vec);
vec[0]=999;//改變原vector的內容並不會修改拷貝後的vector的內容。
printVector(copyInit);
//2、assign
cout<<"2、assign:"<<endl;
vector<int> assignVec;
assignVec.assign(vec.begin(), vec.end());
printVector(assignVec);
//3、swap
cout<<"3、swap:"<<endl;
vector<int> swapVec;
swapVec.swap(vec);
cout<<"vec的內容:";
printVector(vec);//這裏輸出爲空,因爲swap操作後,原來的vector就被清空了
cout<<"swapVec的內容:";
printVector(swapVec);
//4、insert
cout<<"4、insert:"<<endl;
vector<int> insertVec;
insertVec.insert(insertVec.end(), swapVec.begin(), swapVec.end());
printVector(insertVec);
//5.1、copy
cout<<"5.1、copy方式1:"<<endl;
vector<int> copyVec1;
copy(insertVec.begin(), insertVec.end(), std::back_inserter(copyVec1));
printVector(copyVec1);
//5.2、copy
cout<<"5.2、copy方式2:"<<endl;
vector<int> copyVec2;
copyVec2.resize(5);//這裏要預留空間,否則會出錯
copy(insertVec.begin(), insertVec.end(),copyVec2.begin());
printVector(copyVec2);
return 0;
}
運行結果:
1、拷貝初始化:
11 22 33 44 55
2、assign:
999 22 33 44 55
3、swap:
vec的內容:
swapVec的內容:999 22 33 44 55
4、insert:
999 22 33 44 55
5.1、copy方式1:
999 22 33 44 55
5.2、copy方式2:
999 22 33 44 55