c++ vector拷贝方法总结

//by 鸟哥 vector 拷贝的三种方式
//有疑问请留言或加群 1032082534
#include
#include
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

你可能感兴趣的:(c++)