【c++】循环中申明变量与循环外神明变量哪个更快

对于int等基本数据类型,当然是提前申明,然后再循环中进行初始化更快:

void test() {
	clock_t t0 = clock();
	int a;
	for (int i = 0; i < 10000000; i++)
	{
		a = 0;
	}
	cout << "time0:" << clock() - t0 << endl;
	t0 = clock();
	for (int i = 0; i < 10000000; i++)
	{
		int a = 0;
	}
	cout << "time0:" << clock() - t0 << endl;
}

运行之后,前者更快,这是肯定的
在这里插入图片描述
那么如果是stl容器需要在循环中初始化呢

void test() {
	clock_t t0 = clock();
	set<int> s;
	for (int i = 0; i < 100; i++)
	{
		s.clear();
		for (int j = 0; j < 1000; j++)
		{
			s.insert(j);
		}
	}
	cout << "time0:" << clock() - t0 << endl;
	t0 = clock();
	for (int i = 0; i < 100; i++)
	{
		set<int> s;
		for (int j = 0; j < 1000; j++)
		{
			s.insert(j);
		}
	}
	cout << "time0:" << clock() - t0 << endl;
}

运行结果:
在这里插入图片描述
显然后者更快,这是因为申明一个set要比set的clear快得多,所以stl容器需要在循环体中初始化还是具体情况具体分析吧,不能一概认为循环外申明就是好的。

你可能感兴趣的:(c++回顾,c++,stl)