Я видел, что это использовало в качестве небольшой взлом производительности для "динамического типа" указатель (в разделе "Under the Hood"):
, Но вот хитрый прием, я раньше получал быструю производительность для маленьких типов: если сохраненное значение может соответствовать в пустоте*, я на самом деле не потрудился выделять новый объект, я вызываю его в сам указатель с помощью нового размещения.
Да, Qt отлично работает как с Boost, так и с STL. Большая часть функциональности STL продублирована в Qt, чтобы гарантировать, что такие функции поддерживаются на всех платформах, поддерживающих Qt. Однако ничто не запрещает вам использовать STL / boost-аналоги конструкций Qt или функциональных возможностей, которых нет в Qt.
Хотя Qt имеет свои собственные объекты строк, контейнеров и алгоритмов, он также содержит множество функций для совместимости с STL. Например, QString можно преобразовать в std :: string, а QVector можно использовать с std :: for_each. Qt также содержит некоторые функции, которые перекрываются с повышением, такие как QPointer (сравните / сравните с std: auto_ptr и boost: shared_ptr).
Статья Создание пользовательских типов Qt может дать некоторое представление об использовании расширенных функций с объектами Boost, такими как передача пользовательских объектов между потоками с подключениями в очереди .
См. Также:
Qt довольно хорошо работает вместе с STL, хотя, как и любой фреймворк им пришлось заменить некоторые структуры STL по необходимости (единственное, что вы будете вынуждены использовать, это строка / юникод). Все из Boost отлично работает - на самом деле это отличная пара наборов инструментов для совместного использования, но вам нужно быть осторожным с boost :: signal, поскольку Qt также имеет реализацию сигналов, и имена могут перекрываться. Boost освещает это в FAQ и там: