将C++数组复制到Vector容器

C++ STL的vector容器提供了一个优秀的动态数组实现,但有时需要将定长数组复制到vector容器内,循环使用push_back()函数可能严重影响性能,因此可以使用std::copy()函数进行数组的整体复制,以提升性能。

需要注意的是,使用std::copy()函数不会为容器分配空间,因此需要在执行操作前使用vector::resize()等函数以确保容器已经分配了足够的内存空间,从而避免内存错误。

//数据大小
#define DATA_SIZE 1024
 
//数组
int arrData[DATA_SIZE];
 
//vector容器
std::vector<int> arrDataVector;
 
//将数组复制到容器
arrDataVector.clear(); //清空
arrDataVector.resize(DATA_SIZE); //预分配空间
std::fill(arrDataVector.begin(), arrDataVector.end(), 0); //填充预设值
std::copy(arrData, arrData+DATA_SIZE, arrDataVector.begin()); //复制数组

对于Qt的QVector等实现,该方法同样可用:

//数据大小
#define DATA_SIZE 1024
 
//数组
int arrData[DATA_SIZE];
 
//QVector容器
QVector<int> arrDataVector;
 
//将数组复制到容器
arrDataVector.clear(); //清空
arrDataVector.fill(0, DATA_SIZE); //预分配空间并填充预设值
std::copy(arrData, arrData+DATA_SIZE, arrDataVector.begin()); //复制数组

参考:

https://www.cnblogs.com/silentNight/p/5508605.html

https://vimsky.com/examples/usage/stl-std-fill-function-with-example-02.html

https://doc.qt.io/archives/qt-4.8/qvector.html

it
除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License