2013-06-29 2 views
0

Я 2D-массив, объявленный с:Сброс 2D массива векторов

vector<int> array[10][10]; 

Что бы самым быстрым способом очистки любых данных в массиве? Я пробовал:

memset(array, 0, sizeof(array)); 

Но это не работает.

Thanks

+0

Что вы подразумеваете под словом «reset»? И почему бы не 'vector >>', btw? –

+0

Сбрасывая, я имею в виду удаление любых данных, которые он мог бы ранее удерживать, и возврат их в состояние, в котором оно было бы при первоначальном объявлении. И я не использовал 'vector >>', потому что размер 2D-массива не нужно менять, но будет ли использование вектора лучше? – Eamonn

ответ

1

Это 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(); 
0

Вам необходимо выполнить итерацию по 2D-части массива и очистить каждый вектор. Самый быстрый способ должен выглядеть примерно так:

for(unsigned int x = 0; x != 10; ++x) { 
    for(unsigned int y = 0; y != 10; ++y) { 
    array[x][y].resize(0); 
    } 
} 
Смежные вопросы