int N= 23;
int *mas = new int[N];
/// работаешь как с обыкновенным
delete []mas; // не забудь :)
Динамический массив
Туплю ваще )) От жары наверное )))))
Код:
Цитата: __AleXX__
Код:
int N= 23;
int *mas = new int[N];
/// работаешь как с обыкновенным
delete []mas; // не забудь :)
int *mas = new int[N];
/// работаешь как с обыкновенным
delete []mas; // не забудь :)
Я что-то в упор не вижу "динамизма". Выделена память под обычный статический массив. Если в ходе программы не перевыделить память и попытаться записать в N+1 элемент програмка может крешануть.. И вообще можно было погуглить или хоть мсдн открыть.
смотри топик "array keyword [c++]", это если используешь .NET
Если делать таким способом как предлагает __AleXX__ - то нужно постоянно перевыделять память заново, когда в этом возникает необходимость.
Но, имхо лучше юзать STL'овский list =)
если с перераспределением памяти то лучше использовать malloc,realloc,free;
а еще лучше (тут я с тобой согласен) использовать STL (list,vector, короче что надо то и юзать)
А динамическим он называется в первую очередь в том, что выделить ты его можешь произвольного размера в люб. момент работы программы (память берётся из кучи), а не только потому что его размер можно менять.
В примере видно все.Разница между ними в том ,что дек может расти в обоих направлениях и операции вставки и удаления происходят быстро и в начале и в конце,а у вектора быстро работает вставка и удаление в конце контейнера.Если надо вставлять быстро в любую позицию можно использовать список.
Код:
#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;
}
#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;
}
Небольшая поправочка. Вектор и дек никаким образом не относятся только к с++. Это просто общие приемы программирования. =)
Если это не так, нафига ты, Dart Bobr, предлагал свой list?
Еще одно маленькое добавление -- не могу сказать за соотв. контейнер в .NET или Java, но STL vector работает практически не медленнее написанного вручную распределения памяти. В разделе Студентам была тема, где это проверяли.