考慮下面的代碼: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代碼會生成一百萬個向量(我認爲這是有意的) –