Эффективное использование STL
Шрифт:
Объекты функций 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 Programs ацd Designs» (second edition), Addison-Wesley, 1996, ISBN 0-201-63371-X. Также присутствует на компакт-диске «Effective C++» (см. далее).
• Scott Meyers, «Effective C++ CD: 85 Specific Ways to Improve Your Programs and Designs» (second edition), Addison-Wesley, 1999, ISBN 0-201-31015-5. Содержит материалы обеих книг, несколько журнальных статей по теме и кое-какие новинки из области электронных публикаций. За компакт-диском обращайтесь по адресу:Информацию о новинках можно найти по адресам:http://www.microsoft.com/Mind/1099/browsing/browsing.htm.
Книги, написанные другими авторами
[3] Nicolai М. Josuttis, «The C++ Standard Library: A Tutorial and Reference», Addison-Wesley, 1999, ISBN 0-201-37926-0. Незаменимая книга, которая должна быть у каждого программиста C++.
[4] Matthew Н. Austern, «Generic Programming and the STL», Addison-Wesley, 1999, ISBN 0-201-30956-4. Фактически представляет собой печатную версию материалов web-сайта SGI STL, http://www.sgi.com/tech/stl.
[5] ISO/IEC, «International Standard, Programming Languages — C++», ISO/IEC 14882:1998(E), 1998. Официальный документ с описанием C++. Распространяется комитетом ANSI в формате PDF за $18 по адресу http://webstore.ansi.org/ansidocstore/default.asp.
[6] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, «Design Patterns: Elements of Reusable Object-Oriented Software», Addison-Wesley, 1995, ISBN 0-201-63361-2 [4] . Также распространяется на компакт-диске «Design Patterns CD», Addison-Wesley, 1998, ISBN 0-201-63498-8.
Наиболее авторитетное руководство по идиомам проектирования. Каждый программист C++ должен знать описанные идиомы и держать под рукой эту книгу или компакт-диск.[7] Bjarne Stroustrup, «The C++ Programming Language» (third edition), Addison-Wesley, 1997, ISBN 0-201-88954-4. Идиома «захвата ресурсов при инициализации», упоминаемая в совете 12, рассматривается в разделе 14.4.1 этой книги, а код из совета 36 приведен на с. 530.
4
Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. «Приемы объектно-ориентированного проектирования. Паттерны проектирования» — СПб.: Питер, 2001.
[8] Herb Sutter, «Exceptional C++: 47 Engineering Puzzles, Programming Problems and Solutions», Addison-Wesley, 2000, ISBN 0-201-61562-2. Достойное дополнение к моей серии «Effective…». Я бы высоко оценил эту книгу в любом случае, даже если бы Херб не попросил меня написать к ней предисловие.
[9] Herb Sutter, «More Exceptional C++: 40 More Engineering Puzzles, Programming Problems and Solutions», Addison-Wesley, 2001, ISBN 0-201-70434-X. Судя по предварительной версии, которую я видел, эта книга ничуть не хуже предыдущей.
[10] Dov Bulka, David Mayhew, «Efficient C++: Performance Programming Techniques», Addison-Wesley, 2000, ISBN 0-201-37950-3. Единственная и поэтому лучшая книга, посвященная вопросам эффективности в C++.
[11] Matt Austern, «How to Do Case-Insensitive String Comparison», C++ Report, май 2000 г. Эта статья настолько полезна, что она воспроизводится в приложении А настоящей книги.
[12] Herb Sutter, «When Is a Container Not A Container?», C++ Report, май 1999 г. Статья доступна по адресуМатериал пересмотрен и дополнен в совете 6 книги «More Exceptional C++» [9].
[13] Herb Sutter, «Standard Library News: sets and maps», C++ Report, октябрь 1999г. Статья доступна по адресуМатериал пересмотрен и дополнен в совете 8 книги «More Exceptional C++» [9].
[14] Nicolai M. Josuttis, «Predicates vs. Function Objects», C++ Report, июнь 2000 г.
[15] Matt Austern, «Why You Shouldn't Use set — and What to Use Instead», C++ Report, апрель 2000 г.
[16] P.J. Plauger, «HashTables», C/C++ Users Journal, ноябрь 1999 г. В статье описан подход реализации Dinkumware к хэшированным контейнерам (см. совет 25) и его отличия от альтернативных решений.
[17] Jack Reeves, «STL Gotcha's», C++ Report, январь 1997 г. Статья доступна по адресу http://www.bleading-edge.com/Publications/C++Report/v9701/abstract.htm.
[18] Jack Reeves, «Using Standard string in the Real World, Part 2», C++ Report, январь 1999 г. Статья доступна по адресу http://www.bleading-edge.com/Publications/C++Report/v9901/abstract.htm.
[19] Andrei Alexandrescu, «Traits: The if-then-else of Types», C++ Report, апрель 2000 г. Статья доступна по адресу http://www.creport.com/html/from_pages/view_recent_articles_c.cfm?ArticleID=402.
[20] Herb Sutter, «Optimizations That Aren't (In a Multithreaded World)», C/C++ Users Journal, июнь 1999 г. Статья доступна по адресуМатериал пересмотрен и дополнен в совете 16 книги «More Exceptional C++» [9].
[21] Web-сайт SGI STL,В совете 50 кратко описано содержимое этого сайта. Страница, посвященная потоковой безопасности контейнеров STL (взятая за основу при написании совета 12), накодится по адресу http://www.sgi.com/tech/stl/thread_safety.html.
[22] Web-сайт Boost,Содержимое сайта кратко описано в совете 50.