Форум программистов, компьютерный форум, киберфорум
Наши страницы

Можно ли разширять матрицу без удаления предыдущей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разработать три класса, которые следует связать между собой, используя наследование http://www.cyberforum.ru/cpp-beginners/thread1246502.html
Разработать три класса, которые следует связать между собой, используя наследование: класс Product, который имеет три элемент-данных - имя, цена и вес товара (базовый класс для всех классов);...
C++ Запуск деструктора не осуществляется в приведенном коде Добрый день. Написал программу, а в ней не хочет автоматически запускаться, хотя я вроде бы всё правильно делаю. Прошу подсказать, в чём может быть проблема. #include "stdafx.h" #include... http://www.cyberforum.ru/cpp-beginners/thread1246489.html
C++ Где в памяти хранится тип указателя?
Привет! Вы не подскажите, где в памяти храниться тип указателя? Ну допустим, у нас x86 и указатель занимает 4 байта, но эти 4-е байта - это ж просто адрес, а где хранится сам тип? Ведь есть же тип...
C++ Есть ли разница между Visual C++, Borland C++ и C++ Builder?
Какая разница между этими диалектами, или незнаю как это точно называется. И какой лучше?
C++ Как передать указатель функции, чтобы значение переменной изменилось? http://www.cyberforum.ru/cpp-beginners/thread1246422.html
Имеются переменная и указатель на нее. int x, *y = &x; Как передать указатель ф-ии, чтобы значение переменной изменилось?
C++ Вычислить выражение Доброго времени суток всем.Подскажите,как реализовать вычисление данного выражения на С++.С помощью простейших операторов и цикла For. Составить программу вычисления выражения... подробнее

Показать сообщение отдельно
Izual
94 / 119 / 6
Регистрация: 13.11.2012
Сообщений: 1,556

Можно ли разширять матрицу без удаления предыдущей - C++

24.08.2014, 13:09. Просмотров 270. Ответов 7
Метки (Все метки)

Интересует вопрос, можно ли разширять матрицу без удаления предыдущей.

Покажу сразу пример:
Допустим есть некая структура, и так я её первоначально заполняю:
C++
1
2
3
4
var **v;
v = new var*[CMY];//динамическая матрица
    for (int i = 0; i < CMY; i++)
        v[i] = new var[CMX];
И так CMY - это кол-во строк, а CMX - кол-во столбцов.
Исходя из логики использования delete[], матрица должна быть непрерывна в памяти чтоб её можно было корректно удалить.
Я понимаю что в случае с обычным массивом при выделении памяти: "v[i] = new var[CMX];" память выделяется в соответствии с размером самой структуры VAR(либо конкретным типом), однако мне не понятно сколько выделяется памяти и в соответствии с чем в случае выделения для матрицы: "var **v = new var*[CMY];" ведь тут я так понимаю будет лишь указатель.
Вообще исходя из этого вопроса вытекает следующий, можно ли позже нарастить матрицу(хотя указатель возможно чего то и весит, так что не факт что будет свободное место после первоначальной матрицы), или же можно вообще не париться, и выделять память под матрицу с запасом (имею ввиду, что если "вес" указателя не очень то и большой, то можно и сразу под 100 экземпляров выделить указателей, а в соответствии с надобностью уже заполнять их). Вопрос то возник исходя из того, что наращивание матрицы обычным способом через определение нового экземпляра var **vn (на 1 элемент больше чем **v) и копирование из **v в **vn (с внутренними массивами) слишком затратно получается, и если размеры матрицы превысят ~100, то будет уже долго делать копирование всей информации.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.