Стирание элемента из трехмерного вектора в C ++ - PullRequest
0 голосов
/ 03 ноября 2019

Итак, у меня есть вектор, содержащий векторы, которые содержат векторы, которые содержат целые числа, по сути, действующие как трехмерный массив. Я объявил это так:

vector<vector<vector<int>>> maxtrix;
...
int size = 16;
vector<int> intial; 
inital.assign(size, 0); // fill a vector with 0s depending on size
vector<vector<int>> secondInitial;
secondInitial.assign(size, initial); // so now the 2d array holds the inital empty vector
matrix.assign(size,secondInitial); // an array of the 2d arrays -> 3d array.

Поэтому я могу получить доступ к матрице только через

matrix[x][y][z];

, но мне нужно иметь возможность удалять такие элементы, как:

initial.erase(0)

Тем не менее, я попытался сделать невозможным:

matrix.erase([a][b][c]);

Я не уверен, как еще я мог бы получить доступ к «самому глубокому» уровню вектора, чтобы удалить элементы без его объявления.

Я пытался найти способ сделать это для двумерного вектора, экстраполировать на трехмерный вектор, но я застрял. Спасибо.

1 Ответ

0 голосов
/ 03 ноября 2019

Я бы предположил, что что-то вроде этого будет работать:

matrix[x][y].erase(matrix[x][y].begin() + z);

И затем вы заменяете любое число на x, y и z.

...