@Door

Как начать работать с Boost, C++ 11?

Хочется на полную начать использовать новый стандарт, но, поскольку, работается сейчас под Windows, на 10 студии(и неизвестно, когда перейду на новую) + новый стандарт много чего позаимствовал в Boost + Boost это большая и серьёзная библиотека + все крутые дядьки, которые внесли не малую долю в развитие C++ советуют ознакомиться с Boost — в общем, думаю, не плохо для начала начать «серьёзно» использовать тот же Boost.
Всё с чем мне приходилось сталкиваться до сегодня — это Smart Pointers(в некоторой степени) и Program_options.
Так вот — в чём суть вопроса:
как, не доходя до крайностей(например, заменой всех new/delete на boost::shared_ptr, unique_ptr и т.д. — «вау, я использую/знаю Boost») начинать немножко вливаться в весь этот огромный Boost и C++11? Конечно же, я могу смотреть на список задач, которые нужно выполнить и на список возможностей Boost — выбирать нужную мне библиотеку, использовать и на этом всё. Но! Хочется понимать основы на которых это всё строится, как это работает, почему именно это, а не то и т.д. Что значит «понимать» для меня? Ну, например, почему, когда «можно» — лучше использовать boost/std::make_shared, вместо shared_ptr<T> ptr(new T(...))? Потому что, в таком случае происходит оптимизация — вместо 2х выделений памяти(собственно, для объекта и для счётчика) происходит только одно… Это всё хорошо — если загуглить, то везде так и пишут, объясняя причину, но мне нужно «на собственные глаза» увидеть это: дебаггером, действительно видно, что в случае с shared_ptr происходит выделение одного куска памяти и для счётчика, и для объекта T, а потом, с помощью размещающего new, происходит инициализация объекта. И сразу же становиться ясно, откуда берётся «недостаток» make_shared — т.е. невозможность использования определённого пользователем функтора для удаления объекта — всё потому, что используется другой функтор, который просто вызывает деструктор напрямую, что и следует от использования размещающего new.

В общем, «грубо» суть вопроса: как использовать(начать использовать) Boost/новые возможности нового стандарта, имея представляния о реализации используемых возможностей? Как Вы, например, начали изучать C++11?

Спасибо.
  • Вопрос задан
  • 5435 просмотров
Пригласить эксперта
Ответы на вопрос 1
mezastel
@mezastel
Финансовая математика, программирование
Boost и C++11 это разные темы. Насчет C++11 советую посмотреть курс Modern C++ на Pluralsight, вообще в интернете материалов вагон. Из того чтобы я выделил: range-based for, ключевое слово auto, умные указатели уже кстати в std:: (так что boost для этого не нужен), initializer expressions тоже классные, особенно в купе с нестандартными расширениями языка вроде __declspec(property).

Насчет Boost: посмотрите этот курс, почитайте доки. Это огромный набор библиотек, выбирайте то что вам нужно. Мне например нравится сериализация, boost::optional, также в некоторых случаях использую signals2. Зависит от задач.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы