Подтвердить что ты не робот

Создать контейнер С++, который аккуратно вписывается в STL

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

Есть ли руководство, отчет, Q & A и т.д., где описывается, как писать код с помощью этих наборов функций? Такой текст должен нарушать принципы проектирования STL, ловушек, соглашений кодирования и т.п.

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

Помимо рекомендованного пользователем763305, я также хотел бы взглянуть на Austern, Generic Programmming и STL: использование и расширение стандартной библиотеки шаблонов С++. Он обсуждает эти проблемы и служит хорошей ссылкой на концепции в STL.