[ROOT] m4 macros and sample files for Autoconf/Automake/Libtool users
Archive for CPP
Why STL SUXX !!!
Искал в инете как сделать String.startsWith на плюсах. Нашёл. Но нашёл не само по себе, а в очень интересном контексте: мужик последовательно и аргументированно объясняет почему STL – это плохо.
Why C++ Templates (and STL) Are Bad
Здесь пишу короткое саммари, чтобы не забыть, благо статья структурирована настолько хорошо, что это делается легко:
1. Плохо поддерживается IDE’шками
2. Идиотское API: ReadOnlyIterator и WriteOnlyIterator, вместо InputIterator и OutputIterator. Что за мудь при работе со строками? Где они startsWith и endsWith?
3. Приходиться оперировать поидиотски огромными струкурами данных: TODO: вписать из собственной практики
Boost.MultiIndex
Сейчас сидел и искал в плюсах аналог LinkedHashSet’a. Нужен был контейнер, который бы одновременно не допускал “одинковых” элементов, и, при этом, сохранял insertion order. Оказалось, что лучше всего для этих целей пользоваться Boost.MultiIndex
JAXP для CPP
Arabica претендует на то чтобы быть “стандартом” в мире XML для плюсов. Во всяком случае кроме собственной имплементации предоставляет, возможности использовать другие xml-либы.
Посмотрим-с…
13.03.07: Посмотрели: ни на что тенденциозное arabica не претендует. Просто ОЧЕНЬ удобный и маленький парсер. У меня заняло 20 мин, чтобы распарсить xml’ину SAX’ом. При сборке, он прочухал, что в системе стоит libexpat, и, насколько я понял, делигирует ему реальную работу. На работе народ парсит xml xerces’ом. Код сильно не отличается, хотя я глубоко и не вникал пока в чём разница, и, надеюсь, что не придётся :-). Xerces гораздо больше Арабики. Это объясняется тем, что она смело использует stl и boost, в то время как xerces гоняется за переносимостью, поэтому таскает весь второстпенный (утилитарный) код с собой.
Про boost::assign
Ну очень мне понравилась возможность: vector v; v += 1, 2, 3, 4;
Оригинальная документация
Чтобы использовать эти бонусы требуется:
1. include <boost/assign.hpp>
2. using namespace boost::assign