【注意:不要一个个遍历去赋值,有专门的函数可以拷贝复制】
首先是传统的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(); }
下面来看看容器里面的值: