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

Ваш аккаунт

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

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

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

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

25K
09 августа 2007 года
Mein
17 / / 09.08.2007
Как его можно создать и с ним работать?
Туплю ваще )) От жары наверное )))))
12K
09 августа 2007 года
__AleXX__
133 / / 02.04.2007
 
Код:
int N= 23;
int *mas = new int[N];
/// работаешь как с обыкновенным
delete []mas;  // не забудь :)
255
09 августа 2007 года
Dart Bobr
1.4K / / 09.04.2004
Цитата: __AleXX__
 
Код:
int N= 23;
int *mas = new int[N];
/// работаешь как с обыкновенным
delete []mas;  // не забудь :)


Я что-то в упор не вижу "динамизма". Выделена память под обычный статический массив. Если в ходе программы не перевыделить память и попытаться записать в N+1 элемент програмка может крешануть.. И вообще можно было погуглить или хоть мсдн открыть.
смотри топик "array keyword [c++]", это если используешь .NET
Если делать таким способом как предлагает __AleXX__ - то нужно постоянно перевыделять память заново, когда в этом возникает необходимость.
Но, имхо лучше юзать STL'овский list =)

12K
09 августа 2007 года
__AleXX__
133 / / 02.04.2007
Я привел простой примерчик, чтоб человек вспомнил :)
если с перераспределением памяти то лучше использовать malloc,realloc,free;
а еще лучше (тут я с тобой согласен) использовать STL (list,vector, короче что надо то и юзать)

А динамическим он называется в первую очередь в том, что выделить ты его можешь произвольного размера в люб. момент работы программы (память берётся из кучи), а не только потому что его размер можно менять.
320
09 августа 2007 года
m_Valery
1.0K / / 08.01.2007
В С++ для этого есть вектор или дек.Иммитируют динамический массив.
В примере видно все.Разница между ними в том ,что дек может расти в обоих направлениях и операции вставки и удаления происходят быстро и в начале и в конце,а у вектора быстро работает вставка и удаление в конце контейнера.Если надо вставлять быстро в любую позицию можно использовать список.
Код:
#include <iostream>
#include <vector>
#include <deque>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    vector<int> coll1;
    deque<int> coll2;
    for(int i = 0;i < 10;++i){
       coll1.push_back(i);
       coll2.push_front(i);
    }
    coll1.push_back(24);
    coll2.push_front(35);
    for(int i = 0;i < coll1.size();++i){
      cout<<coll1<<' ';
    }
    cout<<endl;
    for(int i = 0;i < coll2.size();++i){
      cout<<coll2<<' ';
    }
    cout<<endl;
    return 0;
}
255
10 августа 2007 года
Dart Bobr
1.4K / / 09.04.2004
Небольшая поправочка. Вектор и дек никаким образом не относятся только к с++. Это просто общие приемы программирования. =)
12K
10 августа 2007 года
__AleXX__
133 / / 02.04.2007
Я думаю m_Valery имел в виду, что используя с++, можно использовать и vector и deque из библиотеки STL, а не то, что они относятся к языку. Просто они на нем реализованы :))

Если это не так, нафига ты, Dart Bobr, предлагал свой list?
63
10 августа 2007 года
Zorkus
2.6K / / 04.11.2006
Еще одно маленькое добавление -- не могу сказать за соотв. контейнер в .NET или Java, но STL vector работает практически не медленнее написанного вручную распределения памяти. В разделе Студентам была тема, где это проверяли.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог