LINUX.ORG.RU

вставка подразумевает увеличение размерности массива? Массив реализован на списках?

fura13 ★★★
()
Ответ на: комментарий от fura13

Динамический двумерный массив, реализован в классе как указатель на массив указателей на строки. Подразумевается создание нового экземляра класса - результирующего массива с занесением значений предыдущего массива и вставленной строкой. Примерно так. class Matrix { int n; int **m; public: Matrix(int); ...... ~Matrix(); }; Matrix::Matrix(int size) { n = size; m = new int*[n]; for (int i = 0; i < n; i++) m[i] = new int[n]; }

anonymous
()
Ответ на: комментарий от anonymous

a[0]=string0 a[1]=string1 ... a[k]=stringk a[k+1]=string(k+1) ... a[n]=stringn где string это однотипный массив

Задача вставки a[new] между a[k] и a[k+1] заключается в передвижении всех ссылок с a[k+1](включительно) вперед, предварительно выделив для а места на один эл больше. А потом просто a[k+1] = string(new) ,

Для нового объекта передвигать ничего не нужно. При создании учесть новую строку и все.

Со столбцом почти аналогично. Только проход будет по элементу строк. Также реалоцируешь(а для нового экз класса просто к неью плюсуешь один) и пихаешь с учетом столбца.

Если операции удаления\вставки строк и столбцов оч частые нужно подумать о оптимизации.

fura13 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.