Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Qt контейнеры vs STL, что используем? 
:(
    Опции темы
 
Какие контейнеры предпочитаете использовать в своих Qt программах?
STL [ 12 ]  [33.33%]
Qt [ 21 ]  [58.33%]
самописные/другие [ 0 ]  [0.00%]
не использую/не знаю, что это такое [ 3 ]  [8.33%]
Всего проголосовавших: 36
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
pan2004
Дата 3.8.2009, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 6
Всего: 9



Собственно вопрос.
Имеется в виду, в каких контейнерах предпочитаете использовать там, где острой необходимости в кутешных нет. Так например, есть методы/функции Qt, принимающие/возвращающие "свои" списки и векторы - их в расчет не берем.


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
ecspertiza
Дата 3.8.2009, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Тут нужно не радиоБатон а чекБоксsmile Я когда какие когда Qt когда самописные.

Но проголосовал за КуТе smile

Это сообщение отредактировал(а) ecspertiza - 3.8.2009, 16:52


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Любитель
Дата 3.8.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Если есть возможность - я бы использовал Qt-шные. Интеграция (в виде того foreach-а) + фишки вроде COW радуют. К тому же они STL-совместимые, алгоритмы будут работать нормально.


--------------------
PM MAIL ICQ Skype   Вверх
pan2004
Дата 3.8.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: 6
Всего: 9



Qt foreach работает и с STL контейнерами


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
SABROG
Дата 3.8.2009, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Из документации:
Цитата

These container classes are designed to be lighter, safer, and easier to use than the STL containers. If you are unfamiliar with the STL, or prefer to do things the "Qt way", you can use these classes instead of the STL classes.


Вольный перевод:
Цитата

Данные классы контейнеров разработаны, чтобы быть "легче", безопасней и легко используемыми. Если вы не знакомы с STL или предпочитаете думать "по-кутешному", Вы можете использовать эти классы, вместо STL классов.


Я, например, предпочитаю думать "по-кутешному" и использовать классы, которые предоставляет Qt. Мне достаточно доводов "легче", "безопасней" и "легко использовать". Кроме того, популярных реализаций STL как минимум 4: gcc, msvc, stlport (причем тоже разных версий), bcc. Внутренняя реализация у них разная. Можно конечно использовать stlport, только вот доставлять лишние библиотеки не хочется.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
andrew_121
Дата 3.8.2009, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



STL.
Да, реализация у них разная, но поведение гарантированно!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Mal Hack
Дата 3.8.2009, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



В модулях, выполняющих, к примеру, мат. алгоритм, т.е. не связанных с GUI использую STL, в GUI Implementation - Qt.
PM ICQ   Вверх
dix75
Дата 3.8.2009, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Только STL.
за исключением стрингов конечно.

Цитата(SABROG @  3.8.2009,  17:59 Найти цитируемый пост)
STL как минимум 4: gcc, msvc, stlport (причем тоже разных версий), bcc

Ну и что, стандартом гарантированно их поведение,  результаты и иногда скорость.


--------------------
save your mind
PM MAIL   Вверх
SABROG
Дата 3.8.2009, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(Mal Hack @  3.8.2009,  22:00 Найти цитируемый пост)
В модулях, выполняющих, к примеру, мат. алгоритм, т.е. не связанных с GUI использую STL, в GUI Implementation - Qt. 


Цитата(dix75 @  3.8.2009,  22:38 Найти цитируемый пост)
Ну и что, стандартом гарантированно их поведение,  результаты и иногда скорость.


В принципе поддерживаю. Сам писал на Delphi бизнес-логику с использованием STL, теперь она нормально переноситься на любой компилер. С другой стороны, совсем не сложно заменить объявление QVector на std::vector в нескольких местах. Поведение ведь одинаковое.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
andrew_121
Дата 3.8.2009, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Цитата(SABROG @  3.8.2009,  23:00 Найти цитируемый пост)
совсем не сложно заменить объявление QVector на std::vector в нескольких местах. Поведение ведь одинаковое. 

Смысл опроса - 0  smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Mal Hack
Дата 3.8.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(SABROG @  4.8.2009,  00:00 Найти цитируемый пост)
Поведение ведь одинаковое. 

Ну как тебе сказать... Глубоко я не копал, но на днях столкнулся со следующим траблом.
В общем надо было в функцию передавать фиксированный массив строк. Ну я хотел ссылкой кинуть адрес самого массива, чтобы внутри обращаться аля aaa[0], aaa[1] etc.
Короче, как раньше я делал в STL (однотипный пример):
Код
std::vector<int> aaa;
func(&aaa);


В случае с QVector такое не катит... Там надо передавать QVector::data().

Маловероятно, что это были мои глюки, несмотря на позднюю ночь.
Т.е. я к тому, что тут не все так просто для 
Цитата(SABROG @  4.8.2009,  00:00 Найти цитируемый пост)
С другой стороны, совсем не сложно заменить объявление QVector на std::vector в нескольких местах.



QStringList вроде как тоже не заюзаешь аля aaa[0] = "sdsds" без предварительной инициализации.

К тому же, самая большая проблема STL это как раз-таки не "thread safe", в отличии от Qt'шных контейнеров. Но по моему мнению thread safe в первую очередь должен программистом реализовываться при проектировании системы.

Это сообщение отредактировал(а) Mal Hack - 3.8.2009, 23:32
PM ICQ   Вверх
SABROG
Дата 4.8.2009, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(Mal Hack @  3.8.2009,  23:30 Найти цитируемый пост)
В случае с QVector такое не катит... Там надо передавать QVector::data().

А можно пример? data() возвращает все-таки указатель, а не ссылку. Было бы очень странно, если ссылка на объекты в C++ не будет работать.


Цитата(Mal Hack @  3.8.2009,  23:30 Найти цитируемый пост)
QStringList вроде как тоже не заюзаешь аля aaa[0] = "sdsds" без предварительной инициализации.

Имеется ввиду замена строки по индексу 0, где уже что-то есть или инициализация пустого списка таким образом, вместо insert или << ?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
azesmcar
Дата 4.8.2009, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



ха smile 
как раз хотел задать этот вопрос.
хотелось узнать насколько целесообразно использовать Qt контейнеры, но как посмотрю это вопрос спорный и скорее тут дело вкуса.

По теме. Я использовал Qt контейнеры для совместимости (многие функции в Qt принимают Qt контейнеры).
Насчет удобства - не скажу что разница большая, почти одно и тоже.
PM   Вверх
Любитель
Дата 4.8.2009, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(pan2004 @  3.8.2009,  17:32 Найти цитируемый пост)
Qt foreach работает и с STL контейнерами 

Да, был не прав. Почему то думал, что foreach через java-style итераторы работает smile

Цитата(SABROG @  3.8.2009,  23:00 Найти цитируемый пост)
Сам писал на Delphi бизнес-логику с использованием STL

На Делфи? STL? Я чего-то не понимаю smile 

Цитата(SABROG @  3.8.2009,  23:00 Найти цитируемый пост)
С другой стороны, совсем не сложно заменить объявление QVector на std::vector в нескольких местах. Поведение ведь одинаковое. 

Потокобезопасность это раз. Возможность возврата QVector по значению (сколько функций в Qt возвращают всякие QList?) - это два. Не, конечно, std::vector тоже можно вернуть по значению, но.. слишком уж неэффективно smile А если брать конкретно QStringList - так ещё и ряд удобных методов специально для строк. Вообщем, не вижу причин не использовать кутешные контйнеры (вот кутешные алгоритмы - да, нафиг не нужны, если мы не хотим извращаться с поддержкой никому не известных компилеров).


--------------------
PM MAIL ICQ Skype   Вверх
SABROG
Дата 4.8.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(Любитель @ 4.8.2009,  10:04)
На Делфи? STL? Я чего-то не понимаю smile 

Borland Builder C++ smile


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1103 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.