c++ vector拷貝方法總結

//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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章