Я 2D-массив, объявленный с:Сброс 2D массива векторов
vector<int> array[10][10];
Что бы самым быстрым способом очистки любых данных в массиве? Я пробовал:
memset(array, 0, sizeof(array));
Но это не работает.
Thanks
Я 2D-массив, объявленный с:Сброс 2D массива векторов
vector<int> array[10][10];
Что бы самым быстрым способом очистки любых данных в массиве? Я пробовал:
memset(array, 0, sizeof(array));
Но это не работает.
Thanks
Это 2D-массив векторов. Другими словами, это в основном 3D-массив с динамикой 3-го измерения. Если вы хотите создать динамический 2D массив, вы могли бы сделать это следующим образом:
vector<vector<int> > array(10, vector<int>(10));
Для очистки:
array.clear();
array.resize(10, vector<int>(10));
Если вы хотите придерживаться вашего массива вы можете очистить его с помощью цикла:
for(unsigned int i = 0; i < 10; i++)
for(unsigned int j = 0; j < 10; j++)
array[i][j].clear();
Вам необходимо выполнить итерацию по 2D-части массива и очистить каждый вектор. Самый быстрый способ должен выглядеть примерно так:
for(unsigned int x = 0; x != 10; ++x) {
for(unsigned int y = 0; y != 10; ++y) {
array[x][y].resize(0);
}
}
Что вы подразумеваете под словом «reset»? И почему бы не 'vector>>', btw? –
Сбрасывая, я имею в виду удаление любых данных, которые он мог бы ранее удерживать, и возврат их в состояние, в котором оно было бы при первоначальном объявлении. И я не использовал 'vector>>', потому что размер 2D-массива не нужно менять, но будет ли использование вектора лучше? –
Eamonn