考虑下面的代码:C++矢量<int>数组初始化
vector<int> A[1000000];
for(int i = 0; i < 1000000; i++){
A[i].clear();
}
我运行它具有测试用例我的代码运行自动终端上,所以我不能得到充分的调试消息。我没有得到任何错误,并且程序似乎在单个测试用例下运行良好。然而,当我跑完全套我通过/失败的测试案例随机(有一次我可以通过第一个3,另一个通过除了他们以外的所有东西,另一个我只通过第二个等)。我想确保这种初始化会摆脱阵列上的“未定义”值(例如,char *buffer = new char[100]; buffer[0] = 0;
),以避免它导致随机崩溃。
sizeof(A) == 24000000
(〜23MB),sizeof(int) == 4
。我只给这些向量添加了100万个整数(总数),所以在最差的测试中,每个向量可以是一个元素向量,或者一个向量可以有一百万个整数,而其余的则是空的。
我必须调用析构函数吗?我没有假设,因为我从来没有称过新的,但我是STL的新手。最后,这可能不是我的代码但是测试人员的问题,但仍然需要确保我的方面没问题。
此代码是OK循环使用,有可能是一个错误的其他地方。或者堆栈溢出 –
你试过了吗,'vector A(1000000,0);'?这将用零填充矢量。 –
tinstaafl
@tinstaafl这是一个单独的向量,OP代码会生成一百万个向量(我认为这是有意的) –