"Эффективное использование STL" - читать интересную книгу автора (Мейерс Скотт)
Эффективное использование STL Предисловие Благодарности От издательства Введение Определение, использование и расширение STL Ссылки STL и Стандарты Подсчет ссылок string
и wstring
Терминология Примеры Вопросы эффективности Рекомендации Контейнеры Совет 1. Внимательно подходите к выбору контейнера Совет 2. Остерегайтесь иллюзий контейнерно-независимого кода Совет 3. Реализуйте быстрое и корректное копирование объектов в контейнерах Совет 4. Вызывайте empty вместо сравнения size() с нулем Совет 5. Используйте интервальные функции вместо одноэлементных Совет 6. Остерегайтесь странностей лексического разбора C++ Совет 7. При использовании контейнеров указателей, для которых вызывался оператор new, не забудьте вызвать delete для указателей перед уничтожением контейнера Совет 8. Никогда не создавайте контейнеры, содержащие auto_ptr Совет 9. Тщательно выбирайте операцию удаления Совет 10. Помните о правилах и ограничениях распределителей памяти Совет 11. Учитывайте область применения пользовательских распределителей памяти Совет 12. Разумно оценивайте потоковую безопасность контейнеров STL Контейнеры vector и string Совет 13. Используйте vector и string вместо динамических массивов Совет 14. Используйте reserve для предотвращения лишних операций перераспределения памяти Совет 15. Помните о различиях в реализации string Совет 16. Научитесь передавать данные vector и string функциям унаследованного интерфейса Совет 17. Используйте «фокус с перестановкой» для уменьшения емкости Совет 18. Избегайте vectorlt;boolgt; Ассоциативные контейнеры Совет 19. Помните о различиях между равенством и эквивалентностью Совет 20. Определите тип сравнения для ассоциативного контейнера, содержащего указатели Совет 21. Следите за тем, чтобы функции сравнения возвращали false в случае равенства Совет 22. Избегайте изменения ключа «на месте» в контейнерах set и multiset Совет 23. Рассмотрите возможность замены ассоциативных контейнеров сортированными векторами Совет 24. Тщательно выбирайте между map::operator[] и map::insert Совет 25. Изучите нестандартные хэшированные контейнеры Итераторы Совет 26. Старайтесь использовать iterator вместо const_iterator, reverse_iterator и const_reverse_iterator Совет 27. Используйте distance и advance для преобразования const_iterator в iterator Совет 28. Научитесь использовать функцию base Совет 29. Рассмотрите возможность использования istreambuf_iterator при посимвольном вводе Алгоритмы Совет 30. Следите за тем, чтобы приемный интервал имел достаточный размер Совет 31. Помните о существовании разных средств сортировки Совет 32. Сопровождайте вызовы remove-подобных алгоритмов вызовом erase Совет 33. Будьте внимательны при использовании remove-подобных алгоритмов с контейнерами указателей Совет 34. Помните о том. какие алгоритмы получают сортированные интервалы Совет 35. Реализуйте простые сравнения строк без учета регистра символов с использованием mismatch или lexicographical_compare Совет 36. Правильно реализуйте copy_if Совет 37. Используйте accumulate или for_each для обобщения интервальных данных Функции, функторы и классы функций Совет 38. Проектируйте классы функторов для передачи по значению Совет 39. Реализуйте предикаты в виде «чистых» функций Совет 40. Классы функторов должны быть адаптируемыми Совет 41. Разберитесь, для чего нужны ptr_fun, mem_fun и mem_fun_ref Совет 42. Следите за тем, чтобы конструкция lesslt;Tgt; означала operatorlt; Программирование в STL Совет 43. Используйте алгоритмы вместо циклов Совет 44. Используйте функции контейнеров вместо одноименных алгоритмов Совет 45. Различайте алгоритмы count, find, binary_search, lower_bound, upper_bound и equal_range Совет 46. Передавайте алгоритмам объекты функций вместо функций Совет 47. Избегайте «нечитаемого» кода Совет 48. Всегда включайте нужные заголовки Совет 49. Научитесь читать сообщения компилятора Совет 50. Помните о web-сайтах, посвященных STL Сайт SGI STL Сайт STLport Сайт Boost Литература Книги, написанные мной Книги, написанные другими авторами Ошибки и опечатки Локальные контексты Сравнение строк без учета регистра символов Первая попытка Локальный контекст Локальные контексты в C++ Фасет collate Сравнение строк без учета регистра Замечания по поводу платформ STL от Microsoft Шаблоны функций классов в STL MSVC версий 4-6 Обходное решение для MSVC4-5 Обходное решение для MSVC6
От издательства Ваши замечания, предложения, вопросы, касающиеся русского издания этой книги, отправляйте по адресу электронной почты [email protected] (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На web-сайте издательства http://www.piter.com вы найдете подробную информацию о наших книгак.