Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Эффективное использование STL. Библиотека программиста - Мейерс С.

Мейерс С. Эффективное использование STL. Библиотека программиста — Спб.: Питер , 2002. — 224 c.
ISBN 5-94723-382-7
Скачать (прямая ссылка): effektivnoeispolzovaniestlbibliote2002.djvu
Предыдущая << 1 .. 98 99 100 101 102 103 < 104 > 105 106 107 108 109 110 .. 114 >> Следующая

компиляция в отладочном режиме помогают убедиться в том, что ваша
программа не игнорирует различия между указателями и итераторами для
соответствующих типов контейнеров. Одной этой причины может оказаться
достаточно для того, чтобы познакомиться с отладочным режимом STLport.
#
Сайт Boost
В 1997 году завершился процесс, приведший к появлению Международного
стандарта C++. Многие участники были разочарованы тем, что возможности,
за которые они выступали, не прошли окончательный отбор. Некоторые из
этих участников были членами самого Комитета, поэтому они решили
разработать основу для дополнения стандартной библиотеки во время второго
круга стандартизации. Результатом их усилий стал сайт Boost, который был
призван "предоставить бесплатные библиотеки C++. Основное внимание
уделяется переносимым библиотекам, соответствующим Стандарту C++". За
этой целью кроется конкретный мотив:
"По мере того как библиотека входит в "повседневную практику", возрастает
вероятность того, что кто-нибудь предложит ее для будущей стандартизации.
Предоставление библиотеки на сайт Boost.org является одним из способов
создания "повседневной практики"...".
Иначе говоря, Boost предлагается в качестве механизма, помогающего
отделить плевелы от зерен в области потенциальных дополнений стандартной
библиотеки C++. Вполне достойная миссия, заслуживающая нашей
благодарности.
202 Глава 7 • Программирование в STL
Также стоит обратить внимание на подборку библиотек, находящихся на сайте
Boost. Я не стану описывать ее здесь хотя бы потому, что к моменту выхода
книги на сайте наверняка появятся новые библиотеки. Для пользователей STL
особый интерес представляют две библиотеки. Первая содержит шаблон
shared_ptr, умный указатель с подсчетом ссылок, который в отличие от
указателя auto ptr из стандартной библиотеки может храниться в
контейнерах STL (см. совет 8). Библиотека умных указателей также содержит
шаблон sharedarray, умный указатель с подсчетом ссылок для работы
динамическими массивами, но в совете 13 вместо динамических массивов
рекомендуется использовать контейнеры vector и string; надеюсь,
приведенные аргументы покажутся вам убедительными.
Поклонники STL также оценят богатый ассортимент библиотек, содержащих
объекты функций и другие вспомогательные средства. В этих библиотеках
заново спроектированы и реализованы некоторые концепции, заложенные в
основу объектов функций и адаптеров STL, в результате чего были сняты
некоторые искусственные ограничения, снижающие практическую полезность
стандартных функторов. В частности, при попытках использовать bind2nd с
функциями mem_fun и mem_fun_ref (см. совет 41) для привязки объекта к
параметрам функции класса выясняется, что при передаче параметра по
ссылке код, скорее всего, компилироваться не будет. Аналогичный результат
достигается использованием notl и not2 с ptrfun и функцией, получающей
параметр по ссылке. Причина в обоих случаях заключается в том, что в
процессе специализации шаблона многие платформы STL генерируют "ссылку на
ссылку", но в C++ такая конструкция запрещена (в настоящее время Комитет
по стандартизации рассматривает возможность внесения изменений в Стандарт
для решения этой проблемы). Пример проблемы "ссылки на ссылку":
class Widget { public:
int readStream(istreams stream): // Функции readStream
// параметр передается
// по ссылке
\tector<Widget*> vw;
for_each( // Большинство платформ STL
vw.beginO.vw.endO. // при этом вызове
bind2nd(mem_fun(&Widget::readStream),cin) // пытается сгенерировать
): // ссылку на ссылку.
// Фрагмент не компилируется!
Объекты функций Boost решают эту и многие другие проблемы, а также
значительно повышают выразительность объектов функций.
Если вы интересуетесь потенциальными возможностями объектов функций STL и
хотите познакомиться с ними поближе, поскорее посетите сайт Boost. Если
объекты функций вас пугают и вы считаете, что они существуют только для
умиротворения малочисленных апологетов Lisp, вынужденных программировать
на C++, все равно посетите сайт Boost. Библиотеки объектов функций Boost
важны, но они составляют лишь малую часть полезной информации,
находящейся на сайте.
Литература
В книге имеются ссылки на большинство публикаций, перечисленных ниже,
хотя многие ссылки присутствуют лишь в разделе "Благодарности".
Публикации, которые в книге не упоминаются, помечены кружком вместо
цифры.
Адреса URL ненадежны, поэтому я некоторое время сомневался, стоит ли
приводить их в этом разделе. В итоге я решил, что даже если URL станет
недействительным, предыдущее местонахождение документа поможет вам найти
его по новому адресу.
Книги, написанные мной
[1] Scott Meyers, "Effective C++: 50 Specific Ways to Improve Your
Programs and Designs" (second edition), Addison-Wesley, 1998, ISBN 0-201-
92488-9. Также присутствует на компакт-диске "Effective C++" (см. далее).
[2] Scott Meyers, "More Effective C++: 35 New Ways to Improve Your
Предыдущая << 1 .. 98 99 100 101 102 103 < 104 > 105 106 107 108 109 110 .. 114 >> Следующая