:)
![]() 4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
1 | |
Qt эквиваленты std сущностей31.07.2013, 11:59. Показов 4289. Ответов 14
Метки нет Все метки)
(
Всем привет.
Какой цели добивались разработчики Qt, дублируя сущности из стандартной библиотеки С++? Вот например есть qMax эквивалент std::max. Зачем? Заранее спасибо.
2
|
|
31.07.2013, 11:59 | |
Ответы с готовыми решениями:
14
Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri STL std::set, std::pair, std::make_pair
|
![]() 5053 / 3114 / 271
Регистрация: 11.11.2009
Сообщений: 7,045
|
|
31.07.2013, 15:15 | 2 |
Tulosba, начнём с того, что все стандартные контейнеры и алгоритмы не являются конкурентными, т.е. без дополнительной ручной синхронизации их нельзя использовать из разных потоков. В свою очередь, насколько мне известно, всё кьютовые аналоги конкурентные из коробки.
2
|
:)
![]() 4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
31.07.2013, 15:28 [ТС] | 3 |
silent_1991, ну, до контейнеров пока дело не дошло
![]() Не по теме: P.S. В STL есть кстати еще версия с компаратором, а в Qt - нет. (может добавят после моего сообщения:D)
0
|
Заблокирован
|
|
31.07.2013, 18:15 | 4 |
![]() Решение
Tulosba, qMax дополнен Q_DECL_CONSTEXPR (типа constextr C++11), std::max - не дополнен ))
Добавлено через 21 минуту в кьют еще и типы данных свои типа qint8 и это тоже хорошо, мы точно знаем сколько байт какой тип из кьют занимает на любой платформе. А если о контейнерах говорить - то не такие уж они и эквиваленты. QVector<bool> работает предсказуемо, на аналог STL ругаются все без исключения. QList на std::list ваще не похож (там время произвольного доступа O(1) против O(n)) - но есть еще QLinkedList Еще можешь заглянуть сюда: http://habrahabr.ru/post/149384/ (в QList и QLinkedList с получением размера все нормально) Видимо тролям не хотелось славливать такие странности от STL, и хотелось независимости. мы знаем что foreach ниразу не for_each (первый вроде бы создает копию контейнера в некоторых случаях). Есть разница и при передаче контейнеров кьюта в функции (чето там перемещением, ага xD) Вобщем они совсем разные, да и если бы они были реально похожи, чето никому не приходило в голову выпилить list из буста... че до кьюта то докапались? Кстати об исключениях я забыл (перечитывал пост и заметил выделенное слово xD) контейнеры кьюта кидают исключения? - а STL кидают (ну кроме всяких std::valarray)
4
|
Заблокирован
|
|||||||||||
31.07.2013, 19:49 | 6 | ||||||||||
или вот например http://alenacpp.blogspot.ru/2005/06/vector.html Сравни например:
2
|
:)
![]() 4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
31.07.2013, 21:32 [ТС] | 7 |
Если посмотреть на дефайн, то и "типа" и "на подобии" превращаются в constexpr на компиляторах, которые это поддерживают или в пустоту иначе.
at(), вероятно, не лучшая операция для сравнения. В STL всё таки не так много мест, где исключения выходят наружу. В общем случае, можно использовать operator[], который не генерит исключений.
1
|
01.08.2013, 17:35 | 8 |
Нет. Берем QVector, там ничего не сказано про потокобезопасность. Потокобезопасно Implicit Sharing, т.е. копирование контейнера при наличие нескольких ссылок и при попытки модификации.
это защита от компиляторов, в котором не в полной мере поддерживается С99, не знаю как насчет последних VC, но некоторые версии VC не поддерживали stdint.h Да. Но только в новых модулях, что бы не нарушить совместимость. Отсутствие исключений это вроде как анахронизм.
1
|
Антикодер
1796 / 860 / 48
Регистрация: 15.09.2012
Сообщений: 3,064
|
|
02.08.2013, 00:43 | 9 |
товарищ во 2-ой лецкии по Qt(на 11:55 мин/сек)
утверждает, что в STL-контейнерах оптимизация сделана по скорости работы, а в Qt оптимизация по памяти.
0
|
02.08.2013, 12:33 | 10 |
Ты можешь написать свой аллокатор, для stl.
Еще реализация контейнеров различна. QMap это skip-list-based dictionary, std::map бинарное дерево. QSet это hash-table-based set, std::set binary search trees. К примеру QSet и std::set могут быть не взаимозаменяемые в случае, когда требуется порядок.
1
|
02.08.2013, 15:04 | 15 |
Tulosba,
Не по теме:
0
|
02.08.2013, 15:04 | |
Помогаю со студенческими работами здесь
15
Десятичные эквиваленты найдите десятичные эквиваленты чисел Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |