【注意:不要一个个遍历去赋值,有专门的函数可以拷贝复制】
首先是传统的vector。
他的拷贝复制有3种,一是构造函数,二是利用assign函数,三是利用swap函数。
代码如下:
#include <iostream>
#include <vector>
using namespace std;
void main(){
vector<int> intVec;
for (int i = 0; i < 10;i++){
intVec.push_back(i);
}
vector<int>::iterator iter;
for (iter = intVec.begin(); iter != intVec.end(); iter++){
if ((*iter) == 5){
intVec.erase(iter);
break;
}
}
vector<int> intVec_2(intVec); //第一种复制(利用了初始化)
vector<int> intVec_3;
intVec_3.assign(intVec.begin(),intVec.end()); //第二种复制 (利用assign函数)
vector<int> intVecTemp(intVec);
vector<int> intVec_4;
intVec_4.swap(intVecTemp); //第三种复制(利用swap)
getchar();
}
现在来看看里面的数据:
传统的vector可以用这3种实现。
下面用QVector来搞下,看看有没有什么区别和联系。
我擦QVector里面没有assign。有点坑啊。
所有QVector实现数据交换有2种,一个是构造函数里面的,一个是使用swap
代码如下:
#include <QApplication>
#include <QVector>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QVector<int> intVec;
for(int i=0;i<10;i++)
intVec.append(i);
QVector<int>::iterator iter;
for(iter=intVec.begin();iter!=intVec.end();iter++){
if((*iter)==5){
intVec.erase(iter);
break;
}
}
QVector<int> intVec_2(intVec);
QVector<int> intVec_3;
QVector<int> intTemp(intVec);
intVec_3.swap(intTemp);
return a.exec();
}
下面来看看容器里面的值: