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) ,有性能问题的主要内容,如果未能解决你的问题,请参考以下文章

vector中慎用push_back(T) ,有性能问题

vector中慎用push_back(T) ,有性能问题

c++中vector封装的push_back函数调用还是报错

如何将 vector<T>::push_back 导出到 Python?

为啥当 T=std::string custom Vector C++ 时在 push_back(T&&) 上出现 SIGSEGV 错误

在展开期间将向量成员推入向量:vector.push_back(vector[0])