З чого почати вчитися користуватися бібліотеками Boost?


16

Нещодавно Boost став доступним для проекту, над яким я працюю, і я не маю великого досвіду з цим. У бібліотеці є стільки частин і особливостей, що важко знати, з чого почати її вивчати - тим більше, що я намагатимусь її вивчити під час створення виробничого коду (тому це не може занадто сповільнити мене).

Я дуже вдячний, якби хтось міг перелічити близько 3 - 5 функцій, які дуже корисні в цілому, щоденне програмування та зазначити, чому вони корисні. Тоді я можу почати вивчати їх і використовувати їх - це, принаймні, допоможе мені опинитися в бібліотеці та дружньому місці, щоб почати це вивчати / застосовувати :)

Спасибі заздалегідь!


Я не розумію в цьому контексті фразу "опора в бібліотеці". Що не так з книгами? Існує декілька на цю тему від звичайних постачальників, їх наявність на книжковій полиці ваших команд має бути обов'язковою.
aquaherd

Я весь час читав програмування - у мене немає часу, щоб прочитати книгу чи довідник про підсилення назад на фронт, щоб знати все, що є, і чи корисне це в цю хвилину чи ні. Я хотів би почати використовувати його тут і там і повільно підбирати його під час роботи, і я хотів декілька основних прикладів дійсно корисних компонентів для підвищення. Наприклад, Ефективний C ++ від Скотта Мейерса розповідає про спільний_птп (і дуже мало іншого), оскільки це так добре. Що ще незвичайно корисно для підвищення?
Джон Хамфріс - w00te

Мені особисто дуже сподобалися макроси BOOST_FOREACH, шаблони спостерігачів / абонентів, регулярні вирази, аналізатори дати / часу (грані), але я або стикався з ними випадково, змінюючи наявний прискорений код, використовуючи код або як DeadMG окреслив. Я лише подряпав кінчик айсберга, який є прискореним, але це відчувалося природним продовженням STL.
aquaherd

Відповіді:


8

Якщо ви використовуєте компілятор попереднього TR1, то розумні покажчики

boost::shared_ptr
boost::weak_ptr
boost::scoped_ptr 

boost::scoped_array
boost::shared_array

Якщо ваш компілятор вже має розумні покажчики, використовуйте їх.
Причина очевидна C ++ без розумних покажчиків - це в основному не C ++

Збільшити бібліотеки ptr_contaier.

Усі контейнери STL повторно реалізовані спеціально для утримання покажчиків. Мало того, що контейнери беруть право власності на покажчики, щоб при знищенні контейнера він автоматично знищував усі покажчики. АЛЕ він також надає доступ до елементів як звичайних посилань на об'єкти (а не покажчики), це полегшує використання об'єктів у стандартних алгоритмах без обертових функторів.

Збільшення лямбда-бібліотек. (див. коментар нижче)

Функтори та в'яжучі STL в порядку для простих речей. Але boost :: lambda зробила це наступним кроком і робить речі набагато простішими при використанні стандартних алгоритмів.

boost :: будь-який і варіант boost ::

Коли потрібно тримати предмети, не бажаючи знати їх точний тип.

мультиіндексні контейнери

Контейнери, які дозволяють отримати кілька різних способів доступу до елементів.
Пройшли дні, коли у вас є векторний об'єкт та окрема карта для швидкого пошуку вектора. Це скорочує на плиті котла, що потрібно записати, щоб підтримувати два контейнери під час вставлення / видалення елементів у контейнери.

boost :: lexical_cast

Напевно, найменш корисне в реальному житті, але з ним весело грати - це boost :: lexical_cast. Він перетворює будь-який об'єкт у / з рядка (до тих пір, поки для цього типу визначені відповідні оператори << та >>). Дуже корисно для демпінгу повідомлень про помилки при видаленні помилок.


1
Boost.Phoenix офіційно замінив Boost.Lambda, який зараз вважається застарілим. Будь ласка, рекомендуйте перший, а не другий, для нового коду. : -]
ildjarn

16

Збільшення не є рамкою, ні бібліотекою. Це колекція бібліотеки, що контролюється якістю. Ви не вчитеся підсилювати. Бібліотеки індивідуальні - коли вам щось потрібно, ви перевіряєте, чи є він у Boost, якщо він є, то ви вивчаєте цю бібліотеку. Це воно. Ви не можете зрозуміти boost :: необов'язково, щоб отримати розуміння на boost :: варіант.


4
Можна сказати, що підвищення - це етикетка якості та набір розповсюдження.
Klaim

1

Boost - це колекція бібліотек. Наступного разу, коли ви зробите ката-код, виберіть бібліотеку в Boost, яку, на вашу думку, може допомогти вам та скористайтеся нею. Документація дуже хороша, і ви не повинні мати жодних проблем із підбором простих звичаїв. Більш складні будуть, коли ви спробуєте робити більш розумні речі.

Приклад: безпечний потік синглтон з boost :: потоком call_once.

Приклад: прочитати файл конфігурації ключ: значення за допомогою токенізатора.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.