Динамические массивы
К примеру есть динамический массив:
float* darray = new float[3];
Допустим при работе моей программы необходимо
изменить его размер - увеличить/уменьшить.
Можно ли это вообще сделать!?!
Знаю , что в Delphi есть setlength ,и там он подходит для динамических массивов.Может в C++ есть аналог?!?
Заранее благодарю!
Цитата:
Originally posted by _anton
Здравствуйте!Такой вопрос.
К примеру есть динамический массив:
float* darray = new float[3];
Допустим при работе моей программы необходимо
изменить его размер - увеличить/уменьшить.
Можно ли это вообще сделать!?!
Знаю , что в Delphi есть setlength ,и там он подходит для динамических массивов.Может в C++ есть аналог?!?
Заранее благодарю!
Здравствуйте!Такой вопрос.
К примеру есть динамический массив:
float* darray = new float[3];
Допустим при работе моей программы необходимо
изменить его размер - увеличить/уменьшить.
Можно ли это вообще сделать!?!
Знаю , что в Delphi есть setlength ,и там он подходит для динамических массивов.Может в C++ есть аналог?!?
Заранее благодарю!
Попробуй использовать:
Changes the size of a memory block.
void *_expand(
void *memblock,
size_t size
);
Огромное спасибо S_T !!!:D
Цитата:
Originally posted by _anton
Здравствуйте!Такой вопрос.
К примеру есть динамический массив:
float* darray = new float[3];
Допустим при работе моей программы необходимо
изменить его размер - увеличить/уменьшить.
Можно ли это вообще сделать!?!
Знаю , что в Delphi есть setlength ,и там он подходит для динамических массивов.Может в C++ есть аналог?!?
Заранее благодарю!
Здравствуйте!Такой вопрос.
К примеру есть динамический массив:
float* darray = new float[3];
Допустим при работе моей программы необходимо
изменить его размер - увеличить/уменьшить.
Можно ли это вообще сделать!?!
Знаю , что в Delphi есть setlength ,и там он подходит для динамических массивов.Может в C++ есть аналог?!?
Заранее благодарю!
Не парься ты с этим, используй 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.
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;
}
______________________________