Написать C ++ контейнер, который аккуратно вписывается в STL - PullRequest
19 голосов
/ 10 июня 2011

Я хотел бы написать контейнерный класс в стиле, который очень аккуратно вписывается в STL.Он должен выглядеть и вести себя так, как если бы он находился в стандартном контейнере STL.

Есть ли там руководство, отчет, вопросы и ответы и т. Д., В которых описано, как писать код с этим набором функций?Такой текст должен ставить под угрозу принципы проектирования STL, подводные камни, соглашения о кодировании и т. П.

PS: Этот вопрос был частично вдохновлен этим: вектор C ++ с динамическим размером элемента хотя эта идея не о шаблонных классах.

Ответы [ 4 ]

8 голосов
/ 10 июня 2011

Это не очень сложно (для простых структур данных).Вам следует прочитать главу о контейнерах в стандарте C ++.Вы можете скачать черновик нового стандарта C ++ 1x здесь:

http://www.open -std.org / jtc1 / sc22 / wg21 / docs / documents / 2011 / # mailing2011-04

http://www.open -std.org / jtc1 / sc22 / wg21 / docs /apers / 2011 / n3242.pdf

Возможно, вы захотите использовать boost ::iterateror_facade при написании итераторов.

http://www.boost.org/doc/libs/1_46_1/libs/iterator/doc/iterator_facade.html

7 голосов
/ 10 июня 2011

Я рекомендую прочитать «1001 *» Херба Саттера «Unstrung» .Это подробный взгляд на std::string, охватывающий то, что пошло правильно и что могло быть сделано лучше.Я высоко ценю его мнение по вопросам программирования на C ++.Это долгое чтение, но я гарантирую, что вы узнаете несколько полезных вещей о написании классов в стиле стандартной библиотеки C ++ (и о написании классов в целом).

Вы также можете взглянуть на СкоттаMeyers ' Эффективный STL .Эта книга даст вам хороший обзор ожиданий, налагаемых на пользователей стандартных библиотечных контейнеров.Понимание этого поможет вам лучше писать классы контейнеров.

4 голосов
/ 10 июня 2011

Я бы порекомендовал прочитать Josuttis, Стандартная библиотека C ++: учебное пособие и справочник .Это дает ясные и простые для понимания объяснения принципов, лежащих в основе STL.

1 голос
/ 11 июня 2011

Помимо того, что рекомендовано user763305, я бы также взглянул на Austern, Общее программирование и STL: использование и расширение стандартной библиотеки шаблонов C ++ .В нем обсуждаются вопросы такого рода, и он служит хорошим справочным материалом для концепций в STL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...