[C++] 奇怪知识|C++坑合集

vector.size()-1导致死循环

【错误代码】

std::vector<int> v;
for(int i = 0; i < v.size()-1; i++)
{
    cout << i;
}

【输出】
在这里插入图片描述
【示例代码】

#include "iostream"
#include "vector"
using namespace std;
int main()
{
	std::vector<int> v;
	// - 错误代码
	/*for(int i = 0; i < v.size()-1; i++)
	{
		cout << i;
	}*/

	// - 错误原因
	cout << v.size();
	cout << v.size() - 1;
	//STL中size()的返回值为unsigned int
	//故v.size()=0时,v.size()-1会发生越界

	// - 解决方案:强转int
	for(int i = 0; i < (int)(v.size() - 1); i++)
	{
		cout << i;
	}

	for(int i = 0, size = v.size(); i < size; i++)
	{
		cout << i;
	}

	return 0;
}
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页