Название: Массивы переменной длины. Отправлено: Aleksey_Zh от Октябрь 28, 2009, 10:06 Перед тем как перебраться на Qt я долгое время программировал на Delphi. Там есть очень полезная и интересная вещь - массивы переменной длины. Всегда можно добавить или удалить элемент из массива. Есть ли что-нибудь аналогичное в Qt? Кто знает - подскажите
Название: Re: Массивы переменной длины. Отправлено: zenden от Октябрь 28, 2009, 10:19 http://doc.trolltech.com/4.5/qvector.html
Название: Re: Массивы переменной длины. Отправлено: Aleksey_Zh от Октябрь 28, 2009, 10:30 Посмотрел. Если ничего не путаю - это одномерный массив, а с многомерностью что - нибудь есть?
Название: Re: Массивы переменной длины. Отправлено: set от Октябрь 28, 2009, 10:55 нет... как в паскале тут не прокатит...
стандартными средствами можно только размерность массива задать переменной (ито в случае многомерного массива только послежнюю расзмерность)... а вот нестандартным можно... в сети есть куча библиотек - подключай и пользуйся... нативные массивы быстрее - самодельные и STL'евские удобнее.. вобще конкретно для си, массив, это всегда строка со списком адресов элементов. Даже если ты работаеш с многомерным массивом - ты работаеш со строкой просто позиция элемента a[i,j] массива a[N,M] (грубо говоря) вычисляется как a[i*N+j]... делайте выводы... Название: Re: Массивы переменной длины. Отправлено: Aleksey_Zh от Октябрь 28, 2009, 11:02 Спасибо. Быстродействие не критично. Можно немного поподробнее - что за нативные массивы и что за STL?
Название: Re: Массивы переменной длины. Отправлено: whirlwind от Октябрь 28, 2009, 11:39 Посмотрел. Если ничего не путаю - это одномерный массив, а с многомерностью что - нибудь есть? как-то вродеКод: QList< QList<int> > ttt; Название: Re: Массивы переменной длины. Отправлено: set от Октябрь 28, 2009, 12:52 Можно немного поподробнее - что за нативные массивы и что за STL? http://cplus.h1.ru/cplus/bookc/bookc/book010.htmhttp://www.sgi.com/tech/stl/ Название: Re: Массивы переменной длины. Отправлено: Norgat от Октябрь 28, 2009, 21:20 вобще конкретно для си, массив, это всегда строка со списком адресов элементов. Даже если ты работаеш с многомерным массивом - ты работаеш со строкой просто позиция элемента a[i,j] массива a[N,M] (грубо говоря) вычисляется как a[i*N+j]... делайте выводы... немного не так... при работе с многомерным массивом добавляется массив указателей на строки, элементы которых уже являются значимыми... поэтому с точки зрения синтаксиса: Код: int a[n][k]; правильно, но с точки зрения адресации в памяти, нет. Название: Re: Массивы переменной длины. Отправлено: Igors от Октябрь 29, 2009, 10:49 Ну особо страдать из-за "отсутствия 2-х мерного массива" не приходится - это легко решается операторами
Код: template <class T> Название: Re: Массивы переменной длины. Отправлено: Winstrol от Октябрь 29, 2009, 14:25 Ну особо страдать из-за "отсутствия 2-х мерного массива" не приходится - это легко решается операторами resize.Код: mData.reserve(mRows * mCols); Если у типов присутсвует деструктор, то он не вызовется для элементов при разрушении массива. Название: Re: Массивы переменной длины. Отправлено: Igors от Октябрь 29, 2009, 14:41 Ну особо страдать из-за "отсутствия 2-х мерного массива" не приходится - это легко решается операторами resize.Код: mData.reserve(mRows * mCols); Если у типов присутсвует деструктор, то он не вызовется для элементов при разрушении массива. |