Учитывая следующий код:C++ Vector <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
. Я добавляю только до 1 миллиона целых чисел к этим векторам (в целом), поэтому в худших тестах каждый вектор может быть одним элементом вектора, или один вектор может иметь 1 миллион целых чисел, а остальное остается пустым.
Должен ли я назвать деструктор? Я не предполагал, что с тех пор, как я никогда не называл новых, но я новичок в STL. Наконец, это может быть не проблема с моим кодом, а с тестером, но все же, я хочу убедиться, что это хорошо на моей стороне.
Этот код ОК, там может быть ошибка в другом месте. Или переполнение стека –
Вы пробовали, 'vector A (1000000,0);'? Это заполнит вектор нулями. –
tinstaafl
@tinstaafl, который является единственным вектором, OP-код делает миллион векторов (который, как я полагаю, преднамерен) –