Мне нужен вектор для добавления элементов (никакого удаления, вставки и тп), наверное подойдёт (а может даже и лучше — объекты жирные) и дека — порядок добавления важен.
Но иногда (и довольно часто) надо искать и по имени.
Основные операции — добавление (с ключом), полный перебор, и поиск по имени. Больше, наверное, ничего и не потребуется.
Ключ обычно лежит в самих элементах в виде поля string name;
Поиск по имени будет использоваться: а) для определения, есть ли уже такое имя или нет; б) для получения элемента по имени (через индекс) — вот тут дека уже не очень. Поиск по имени будет конечно чаще. А получение элемента по имени или индексу будет заметно реже, чем добавление в конец.
Можно самому запилить контейнер с вектором или декой, рядом с которым лежит unordered_map и отображает имена на индексы, но что-то лень.
Может, есть что готовое похожее?
ЗЫ Мне нужно хранить различные дефиниции моего мега DSL языка.