vector中慎用push_back(T) ,有性能问题
Posted 数据轨迹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vector中慎用push_back(T) ,有性能问题相关的知识,希望对你有一定的参考价值。
#include "stdafx.h"
#include <vector>
#include<time.h>
#include <iostream>
using namespace std;
const static int gcount = 1000000;
int main()
vector<int> vecti;
clock_t startTime, endTime;
startTime = clock();//计时开始
for (int i=0;i<gcount;i++)
vecti.push_back(i);
endTime = clock();//计时结束
cout << "The run1 time is: " << (double)(endTime - startTime) << "ms" << endl;
startTime = clock();//计时开始
vecti.resize(gcount);
for (int i = 0; i < gcount; i++)
vecti[i]=i;
endTime = clock();//计时结束
cout << "The run2 time is: " << (double)(endTime - startTime) << "ms" << endl;
getchar();
return 0;
debug下:
The run time is :1203ms
The run1 time is:296ms
release 下:
The run time is :11ms
The run1 time is:1ms
解决方案:
1、编译release 版本
2、使用resize,变成数组的形式
以上是关于vector中慎用push_back(T) ,有性能问题的主要内容,如果未能解决你的问题,请参考以下文章
c++中vector封装的push_back函数调用还是报错
如何将 vector<T>::push_back 导出到 Python?
为啥当 T=std::string custom Vector C++ 时在 push_back(T&&) 上出现 SIGSEGV 错误