Вероятно, наиболее используемая часть повышения для меня повышение:: shared_ptr.
Разговор о повышении:: lexical_cast, почему не что-то, нравится, 'форматируют' статического участника в станд.:: строковая библиотека?
Почти весь gui освобождает, имеют что-то как CString:: Формат (" %i") или QString:: Число (" %i"), которые возвращают инициализированную строку.
То, что я использую большинство, теперь доступно в TR1:
массива Теперь я также использую классы пула и некоторые другие более определенные вещи.
Вы понимаете теперь, когда Повышение предназначено, чтобы быть полезным для большинства программистов, вот почему это - испытательный стенд для будущей стандартной библиотеки.
Хорошо, вот новый, который я нашел:
Вместо того, чтобы использовать stricmp я могу использовать повышение , равняется функция и передача в is_iequal предикате
, например:
вместо
stricmp( "avalue", mystr.c_str() ) == 0
я могу использовать
equals( "avalue", mystr, is_iequal() )
данный:
#include <boost/algorithm/string.hpp>
using namespace boost::algorithm;
Я люблю повышение:: случайный и повышение:: asio и повышение:: файловая система, однако повысьте:: свяжите, повышение:: circular_buffer и повышение:: поток очень практичен, интеллектуальные указатели в порядке, но я предпочитаю RAII вместо этого как управление памятью
Я использую повышение:: числовой:: ublas:: матрица вполне немного.
Я использовал shared_ptr уже много лет. Это настолько полезно, нет никакой причины, что проект должен быть без него.
Вдобавок ко всему, я также использую, Связывать/Функционировать/Лямбда для универсальных механизмов обратного вызова - особенно полезный при тестировании - а также Формат для моей sprintf замены общего назначения.
Наконец, это было просто на днях, когда я использовал Вариант в гневе для решения проблемы (синтаксический анализатор, который мог ответить маленьким, фиксированным набором несвязанных типов маркера). Решение было очень изящно, и я очень доволен им.
boost::shared_ptr
требование для современного программирования на C++, по моему скромному мнению. Вот почему они добавили его к стандарту с TR1. boost::program_options
, boost::bind
, и boost::signal
действительно хороши, если Вы знаете то, для чего они и как использовать их. Последние два имеют тенденцию пугать вновь прибывших все же.
Я использую много:
, который Другой как Кортеж, Статичный, Утверждает и Целое число, очень полезен, если Вы пишете библиотеку, которая должна использоваться на множестве платформ.
Вещи как Графики и Лямбда более конкретны.
Обновление (октябрь 2011): C++ 11 (C++ 0x) имеет static_assert
http://www2.research.att.com/~bs/C++0xFAQ.html#static_assert
Я удивлен, что никто не упомянул boost::optional
. Я использую его чаще, чем какая-либо часть Повышения кроме shared_ptr
и scoped_ptr
.
Никто не упомянул Мультииндексные Контейнеры , таким образом, я вмешаюсь поздно. Дело не в этом часто то, что Вам нужны они, но без повышения это - реальная боль для создания эквивалентной структуры данных, а также быть менее эффективным. Я использовал их много недавно для создания контейнеров, которые имеют, ищут на 2 ключах.
Мои фавориты без определенного порядка:
было крупной справкой, когда я записал свое первое межплатформенное приложение - без него я действительно буду бороться.
BOOST_FOREACH снова делает жизнь стоящей .
(Почему об этом никто не упомянул? Вопрос был задан 8 месяцев назад!)
Мне нравится, что вы можете поставить собственный деструктор для shared_ptr
.
Это означает, что, например, вы можете использовать его с FILE*
и заставить его закрыть файл для вас.
eg
void safeclose(FILE*fp) {
if(fp) {
fclose(fp);
}
}
void some_fn() {
boost::shared_ptr<FILE> fp( fopen(myfilename, "a+t"), safeclose );
//body of the function, and when ever it exits the file gets closed
fprintf( fp.get(), "a message\n" );
}
Один из самых используемых мною алгоритмов находится не в самом Boost, а в Adobe Source Libraries (ASL), построенных поверх Boost - в частности, расширения стандартных алгоритмов, которые принимают boost::range вместо отдельных итераторов begin/end. Тогда вместо вызова, скажем,
std::for_each(some_container.begin(), some_container.end(), do_something());
я могу просто сказать
adobe::for_each(some_container, do_something());
(я надеюсь, что эти части ASL со временем перейдут в Boost)
.Вы должны проверить boost :: program_options. Это значительно упрощает синтаксический анализ командной строки.
Мы обнаружили, что boost :: spirit очень полезен для бизнес-решения для синтаксического анализа ECMAScript. Сложно, но очень красиво!
Я удивлен, что пока не вижу между ответами Boost.Thread .
Я использую контейнеры указателя ускорения, а не контейнер STL shared_ptr
s.