QTime t0;
for (int i = 0; i < 100000000; ++i) {
data1.append(i);
}
//【1】第一种直接追加到尾部
//方式1:append
t0.start();//开始
data2.append(data1);
qDebug()<<"data2的大小"<<data2.size()<<"Append方式:追加到vector;时间为"<<t0.elapsed();
data2.clear();
//方式2:<<
t0.restart();
data2<<data1;
qDebug()<<"data2的大小"<<data2.size()<<"<<方式:追加到vector;时间为"<<t0.elapsed();
data2.clear();
//【2】第二种复制构造 与复制运算符
//方式1:qvector(&)
t0.restart();
QVector<float> data3(data1);
qDebug()<<"data2的大小"<<data3.size()<<"复制构造;时间为"<<t0.elapsed();
data2.clear();
//方式2:=(&)
t0.restart();
data2=data1;
qDebug()<<"data2的大小"<<data2.size()<<"复制运算;时间为"<<t0.elapsed();
//传参赋值
t0.restart();
dodo(data2);
qDebug()<<"data2的大小"<<data2.size()<<"复制传参(实则调用复制构造);时间为"<<t0.elapsed();//构造
//【3】 swap交换
t0.restart();
data2.swap(data1);
qDebug()<<"data2的大小"<<data2.size()<<"swap大法;时间为"<<t0.elapsed();
data2.clear();
//【4】循环赋值 傻啦吧唧
t0.restart();
for (int i = 0; i < data1.size(); ++i) {
data2.append(data1.at(i));
}
qDebug()<<"data2的大小"<<data2.size()<<"循环赋值;时间为"<<t0.elapsed();
//【5】拷贝 ,注意必须保持目标数组大于等于拷贝数组的大小
t0.restart();
memcpy(data2.begin(),data1.begin(),(size_t)sizeof(float)*data1.size()/2);
qDebug()<<"data2的大小"<<data2.size()<<"拷贝内存;时间为"<<t0.elapsed();
so 采用swap或者append和复制构造 对于 浅拷贝数组来讲快很多。