Два 50 миль буфера частично перекрывают друг друга. Записи, расположенные в общей зоне (например, Foo в вашем примере), находятся в пределах 50 миль от двух почтовых индексов. В других местах записи находятся менее чем в 50 милях от одного почтового индекса, но дальше, чем 50 миль от другого почтового индекса.
На изображении ниже только зеленая область находится в пределах 50 миль от обоих почтовых индексов, поэтому записи, расположенные в этой области, будут возвращаться обоими запросами.
Согласен; веб-сайт поддержки по большей части имеет хорошие руководства, разбитые по подбиблиоткам.
Что касается компиляции, то 80% реализации библиотеки определяется в файлах заголовков, что делает компиляцию тривиальной. например, если вы хотите использовать shared_ptr, вы просто добавляете
#include <boost/shared_ptr.hpp>
и компилируете как обычно. Не нужно добавлять пути к библиотекам в вашу команду g ++ или указывать -llibboost. Пока каталог boost находится в вашем пути включения, все готово.
Из документации boost:
Единственные библиотеки, которые необходимо скомпилировать и связать, следующие: Единственные библиотеки Boost, которые должны быть построены отдельно:
- Boost.Filesystem
- Boost.IOStreams
- Boost.ProgramOptions
- Boost.Python (см. Boost.
На веб-сайте Boost есть несколько хороших руководств, они просто скрыты.
Документация библиотеки неоднозначна. Некоторые из них хороши, но некоторые являются скорее справочником, чем руководством. Лучшее руководство по (некоторым) библиотекам Boost - это книга Помимо стандартной библиотеки C ++ . По крайней мере, введение дает описание многих библиотек одним абзацем. Оттуда вы можете решить, какая библиотека наиболее важна для ваших текущих потребностей, и, если она есть в книге, прочитать о ней главу или прочитать документацию на веб-сайте.
Если вы читаете по-немецки, есть ] хорошее онлайн-руководство . Google translate достаточно хорошо справляется со своей задачей, и такой человек, как я, не может это понять.
Кроме того, если у вас нет большого опыта работы с C ++, я бы начал с более простых библиотек (например, smart_ptr, tuple, conversion, tokenizer, регулярное выражение, date_time, test),
Библиотеки поставляются с документацией, и многие из них содержат учебные пособия как часть документации. Просто начните читать.
Boost - это не язык программирования и не платформа приложений - поскольку это всего лишь набор библиотек, не существует такой вещи, как программа Boost «Hello World». Большинство библиотек в Boost можно использовать более или менее независимо, и они различаются по размеру от одной функции до массивных библиотек, которые могут работать автономно.
Лучший способ узнать Boost - это просто попробовать поработать с ним, когда вы пишете новый код. По возможности используйте smart_ptr
; используйте MPL в следующий раз, когда захотите выполнить работу во время компиляции. В Boost много разнообразия, но вам, вероятно, стоит заглянуть в раздел «Утилиты»; это самые легкие и наиболее часто используемые библиотеки.
Using Easypeasy 1.1 (for netbooks) which is based upon Ubuntu I was able to use Synaptic Package Manager to install, I believe, libboost-dev. Then simply by adding:
#include "boost/foreach.hpp"
I was able to replace the existing lines in an existing application (which has an Ask class which has nothing to do with boost):
for (std::vector<Ask*>::iterator ii=ui.begin(); ii!=ui.end(); ++ii)
std::cout << (*ii)->prompt() << (*ii)->answer() << std::endl;
with:
BOOST_FOREACH (Ask* ii, ui)
std::cout << ii->prompt() << ii->answer() << std::endl;
As I understand it this is a header only feature. I have not used anything requiring link time changes yet.