2010-12-07 4 views
1

каждый раз, когда я разрабатываю новые структуры данных на C++, у меня есть некоторые проблемы с указателями, ссылками, константами ..., может кто-нибудь, пожалуйста, порекомендуйте мне хорошие книги с хорошими советами по проектированию контейнеров, спасибо advanve PS книга Джона Мейерса, это хороший выбор?советы по проектированию контейнеров

+0

Какой контейнер вы собираетесь проектировать? Что вы надеетесь сделать, сделав это? Стандартная библиотека уже предоставляет несколько полезных функций, которые в значительной степени охватывают основы того, что мы обычно считаем «контейнером» в информатике. – 2010-12-07 10:18:03

+0

@ Karl Knechtel: Я хочу понять хорошие принципы и как это работает, вот почему я спрашиваю ... если вы хотите быть хорошим программистом, вы должны понять, как работает материал, не так ли? – rookie 2010-12-07 10:20:15

+1

Повторное использование вещей не обязательно является лучшим способом их понять. Лучше прочитать подробные описания того, как обычно работают стандартные реализации. – 2010-12-07 10:21:55

ответ

1

Подробное описание того, как STL реализовано в «Стандартной библиотеке C++: учебное пособие и справочник» Николая М. Йосуттиса.

Эффективный STL от Meyer менее комплексный, но имеет раздел о контейнерах.

0

Эффективный C++ Скотт Майерс - довольно хороший ресурс для общего мастерства C++, и у него есть отличное обсуждение дизайна класса, но я честно считаю, что его «более эффективный C++» немного более уместен для того, говоря о. В нем много говорится о концепциях дизайна классов, таких как подсчет ссылок, копирование на запись и т. Д. Это может быть немного продвинуто для того, что вы ищете, но это, пожалуй, лучшее введение в продвинутый дизайн класса.

Я также считаю, что «Исключительный C++» Херба Саттера может быть хорошим. Я знаю, что у него довольно хорошая дискуссия о разработке класса string, и этот единственный пример настолько полезен, что я бы рекомендовал его выше всего остального. Это обсуждение is also available online, если вы найдете это полезным.

Оба эти обсуждения касаются механики проектирования хорошей абстракции вокруг структуры данных, но они не говорят о структурах данных в целом. Там много увлекательных структур данных, и, вероятно, неплохо увидеть некоторые из них в действии, прежде чем пытаться реализовать свои собственные. Я лично из школы мысли, что вы можете много узнать о дизайне классов, взяв известные структуры данных и кодируя их, хотя я признаю, что это может быть не оптимальный способ обучения кода. Если вам интересно увидеть некоторые забавные структуры данных (например, двоичную кучу, красно-черное дерево, биномиальную кучу, дерево B, лес с несвязанными множествами и кучу Фибоначчи), рассмотрите вопрос о получении копии «Введение в алгоритмы», 3-е Edition "от Кормена, Лейсссона, Ривеста и Штайн. Он широко считается одним из лучших текстов по алгоритмам и имеет достаточно псевдокода, что, если вы хотите написать хорошую структуру данных, вы почти наверняка найдете здесь достаточно намеков. Эти структуры, в сочетании с вышеупомянутыми книгами, должны иметь всю информацию. Это много читается, предоставляется, но вы будете хорошо на пути к гуру данных, если сможете пройти через них.

Надеюсь, это поможет!