Подтвердить что ты не робот

Boost Library

Поскольку я начал использовать этот сайт, я продолжаю слышать о библиотеке Boost. Мне интересно, какие из основных преимуществ библиотеки Boost (отсюда почему я должен ее использовать) и насколько переносимой является библиотека Boost?

4b9b3361

Ответ 1

Boost организован несколькими членами стандартного комитета.
Таким образом, это среда для библиотек, которая будет в следующем стандарте.

  • Это расширение для STL (оно заполняет оставшиеся разряды)
  • Это хорошо документировано.
  • Он хорошо разбирается.
  • Он обладает высокой активностью, поэтому ошибки обнаруживаются и исправляются быстро.
  • Это платформа нейтральная и работает везде.
  • Он свободен в использовании.

Когда tr1 скоро появится, приятно знать, что у boost уже много земли. Многие библиотеки tr1 в основном адаптированы непосредственно из оригинальных оригиналов и, таким образом, были опробованы и протестированы. Разница в том, что они были перемещены в пространство имен std:: tr1 (а не на boost).

Все, что вам нужно сделать, это добавить следующие компиляторы по умолчанию включить путь поиска:

<boost-install-path>/boost/tr1/tr1

Затем, когда вы включаете стандартные заголовки, boost автоматически импортирует все необходимые материалы в пространство имен std:: tr1

Например:

Чтобы использовать std:: tr1:: share_ptr, вам просто нужно включить <memory> . Это даст вам все умные указатели с одним файлом.

Ответ 2

Вы можете просто прочитать страницу Boost Background Information, чтобы получить краткий обзор того, почему вы должны использовать Boost и для чего вы можете его использовать. Стоит несколько минут.

Ответ 3

99% портативный.

Я бы сказал, что у него есть довольно много библиотек, которые действительно полезны, когда вы обнаружите необходимость, которая решается путем повышения. Либо вы его кодируете самостоятельно, либо используете очень прочную библиотеку. Если вы покинете источник полки для таких вещей, как Multi-Index, Lambda, Program Options, RegEx, SmartPtr и Tuple, это удивительно...

Лучше всего потратить некоторое время на просмотр документации для разных библиотек и оценку того, может ли она быть полезной для вас.

Достойный!!

Ответ 4

Boost - это набор библиотек С++. 10 из которых включены в tr1 из С++ 0x.

Вы можете начать с boost здесь.

Ответ 5

Вы получаете много вещей, которые появляются в С++ 0x. Но помимо этой общности, некоторые из лучших особенностей - простая библиотека regex, библиотека литья для литье из строк в ints (Lexical cast):

int iResult = 0;
try
{
    iResult = lexical_cast<int>("4");
}
catch(bad_lexical_cast &)
{
    cout << "Unable to cast string to int";
}

A библиотека даты и времени, среди прочих...

using namespace boost::gregorian;
date weekstart(2002,Feb,1);
date thursday_next = next_weekday(weekstart, Thursday); // following Thursday

Также существует интерфейс Python (Boost Python), lexer/parser DSL (Boost Spirit):

// A grammar in C++ for equations
group       = '(' >> expression >> ')';
factor      = integer | group;
term        = factor >> *(('*' >> factor) | ('/' >> factor));
expression  = term >> *(('+' >> term) | ('-' >> term));

и это просто царапает поверхность...

Ответ 6

Boost - это здорово, но просто играя Devil Advocate вот несколько причин, почему вы не можете использовать Boost:

  • Иногда не удается скомпилировать/правильно работать с старыми компиляторами.
  • Он часто увеличивает время компиляции более чем менее подтянутыми шаблонами.
  • Некоторый код Boost может не делать то, что вы думаете, что он делает. Прочтите документацию!
  • Нарушение шаблонов может привести к нечитаемым сообщениям об ошибках.
  • Нарушение шаблонов может привести к сложному прохождению кода в отладчике.
  • Это кровоточащий край С++. Следующая версия Boost больше не может компилироваться на ваш текущий (более старый) компилятор.

Все это не означает, что вы не должны смотреть на код Boost и сами получать идеи, даже если вы не используете Boost как есть.

Ответ 7

Boost - это коллекция высококачественных рецензируемых библиотек С++, которые делают упор на переносимость и правильность. Он действует как основа для дезактивации новых дополнений к языку и стандартной библиотеке. Посетите их веб-сайт для более подробной информации.

Ответ 8

Повысить преимущества: Он широко доступен, будет переноситься на любой современный компилятор С++ или на любую платформу.
Функции независимы от платформы, вам не нужно изучать новый дизайн потоков для каждой новой структуры.
Он инкапсулирует множество специфических функций platfom, таких как файловые системы стандартным образом.

Это то, что С++ должно было поставлять! Множество популярности Java было то, что поставляется со стандартной библиотекой, чтобы делать prety много всего, что вы хотели. С++, к сожалению, только унаследовал ограниченные стандартные функции C/Unix.

Ответ 9

shared_ptr и weak_ptr, особенно в многопоточном коде, стоят только повышение уровня. BOOST_STATIC_ASSERT также довольно крут для выполнения проверки времени компиляции.

Тот факт, что многие классы и утилиты в boost находятся в заголовках, что означает, что вы можете получить много функциональности, не компилируя ничего вообще, также является плюсом. Переносимость обычно не является проблемой, если вы не используете чрезвычайно старый компилятор. Однажды я попытался заставить MPL работать с VC6, и он полностью распечатал 40 000 предупреждений/внутренних ошибок. Но в целом большая часть библиотеки должна работать независимо от вашей платформы или поставщика компилятора.

Примите во внимание тот факт, что довольно много вещей из Boost уже находятся в TR1 и, скорее всего, будут в следующей версии стандартной библиотеки С++. Это довольно большое одобрение.

Ответ 10

Boost - очень обширная библиотека (обычно) общих конструкций, которая может помочь практически в любом приложении. Это может быть показано тем фактом, что в спецификации С++ 0x включено множество компонентов boost.

Он также переносится, по крайней мере, на основные платформы и должен быть переносимым почти на все, что совместимо с С++ компилятором, совместимым со стандартами.

Единственное предупреждение заключается в том, что между расширенными библиотеками может быть много взаимозависимых зависимостей, что затрудняет выбор только определенного компонента для распространения (кроме всей библиотеки boost).

Ответ 11

Все вышесказанное, плюс оно поощряет множество современных, передовых методов С++. Это улучшает качество вашего кода.

Ответ 12

Также обратите внимание, что большинство форсирования - это шаблоны, поэтому не требуется строительство
(просто включите правильные файлы заголовков).

Несколько частей, которые требуют строительства, не являются обязательными:
Они могут быть построены независимо друг от друга, тем самым предотвращая ненужное раздувание ненужного кода.