Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Динамические массивы

724
09 ноября 2002 года
_anton
100 / / 04.11.2002
Здравствуйте!Такой вопрос.
К примеру есть динамический массив:

float* darray = new float[3];

Допустим при работе моей программы необходимо
изменить его размер - увеличить/уменьшить.
Можно ли это вообще сделать!?!
Знаю , что в Delphi есть setlength ,и там он подходит для динамических массивов.Может в C++ есть аналог?!?

Заранее благодарю!
831
09 ноября 2002 года
S_T
117 / / 23.10.2002
Цитата:
Originally posted by _anton
Здравствуйте!Такой вопрос.
К примеру есть динамический массив:

float* darray = new float[3];

Допустим при работе моей программы необходимо
изменить его размер - увеличить/уменьшить.
Можно ли это вообще сделать!?!
Знаю , что в Delphi есть setlength ,и там он подходит для динамических массивов.Может в C++ есть аналог?!?

Заранее благодарю!


Попробуй использовать:

Changes the size of a memory block.

void *_expand(
void *memblock,
size_t size
);

724
10 ноября 2002 года
_anton
100 / / 04.11.2002
Огромное спасибо S_T !!!:D
540
10 ноября 2002 года
AL C++ Programmer
36 / / 20.01.2000
Цитата:
Originally posted by _anton
Здравствуйте!Такой вопрос.
К примеру есть динамический массив:

float* darray = new float[3];

Допустим при работе моей программы необходимо
изменить его размер - увеличить/уменьшить.
Можно ли это вообще сделать!?!
Знаю , что в Delphi есть setlength ,и там он подходит для динамических массивов.Может в C++ есть аналог?!?

Заранее благодарю!



Не парься ты с этим, используй vector из стандартной библиотеки.

2.2K
10 ноября 2002 года
Tolanay
12 / / 08.10.2002
Не парься ты с этим, используй vector из стандартной библиотеки.

Точно!

#include <vector>

std::vector<float> ar; // пока пустой
ar.reserve(3); // резервируется память под 3
// элемента, но все равно еще пустой
ar.pop_back(1.0f); //
ar.pop_back(1.1f); //
ar.pop_back(1.2f); //
ar.pop_back(1.3f); // память перераспределяется
// под 6 элемента,
// сам содержит 4 элемента

Вобщем посмотри MSDN.
А вообще, на будующее, советую купить какую-нибудь книжку по STL.
409
16 ноября 2002 года
Ramzes
163 / / 20.09.2000
Вот так:

float* darray = new float[3];

_____________________________

int new_size;

if(new_size!=old_size)
{
float *tmp = new float[new_size];

if(new_size<old_size)
old_size=new_size;

memcpy(tmp,darray,old_size);
delete [] darray;
darray = tmp;
}
______________________________
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог