Мне было любопытно, что влечет за собой stl-совместимый контейнер (или буст-совместимый, насколько я понимаю, они либо одинаковые, либо очень похожие). Я видел несколько примеров того, что люди называют stl-совместимым (например, это в codeproject , и, очевидно, фактические контейнеры stl), но я не совсем уверен, какие компоненты этих контейнеров Мне нужно иметь.
Из того, что я мог собрать, мне нужны по крайней мере эти вещи:
STL-совместимые итераторы (текущий stl использует только двунаправленные и более высокие итераторы, не знаю, является ли это требованием или просто случайностью, все еще выясняя, что необходимо считать "stl-" совместимый итератор ")
Механизм определения распределителей (по умолчанию std::allocator
), а также их правильного использования (все еще пытаюсь выяснить, что означает эта последняя часть)
публичные определения типа для метапрограммирования (тип указателя, тип указателя const, тип ссылки, тип значения, тип ссылки const, тип различия, может быть, некоторые другие?). Дополнительный вопрос: Что такое difference type
?
'generic' (т. Е. Использует метапрограммирование / шаблоны, чтобы контейнер мог содержать практически любой тип)
Есть ли что-то еще, что я пропустил или, что еще хуже, ошибся в приведенном выше списке (возможно, такие вещи, как const-правильность, безопасность потоков, генерация / обработка исключений и т. Д.)? Кроме того, есть ли где-нибудь документ с описанием спецификаций, детализирующий, что требуется, если такая вещь вообще существует?