romy4
@romy4
Exception handler

Контейнер, не меняющий порядок элементов при итерации

пускай есть хеш-контейнер
typedef .... container
/// ...
container<string,string> c;
в который добавляются элементы в таком порядке:
c["Update"] = "...";
c["Connection"] = "..."; 
c["Sec"] = "...";

и есть некая итерация по нему
for ( auto it : c )
{
    cout << c.first << ": " << c.second <<  endl;
}


Ожидается:
Update: ...
Connection: ...
Sec: ...


Если бы это был map, то порядок был бы:
Connection: ...
Sec: ...
Update: ...


Если бы unordered_map, то порядок вобще любой
Sec: ...
Connection: ...
Update: ...


Подскажите контейнер для требуемого результата?
  • Вопрос задан
  • 2915 просмотров
Решения вопроса 1
Flanker_4
@Flanker_4
Посмотрите на подобный вопрос
Там в ответах много вариантов, частично пересекающихся с теми, что даны тут.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Amper
@Amper
Может быть это «из пушки по воробьям», но можете посмотреть в сторону Boost Multi-index
Ответ написан
ixSci
@ixSci
Ну Вы и название придумали. Я прежде чем зайти думал какой-то это контейнер меняет порядок при итерации :)

По поводу вопроса: «Вам шашечки или ехать?» Вы хотите иметь быстрый доступ и сохранение порядка? но так не пойдет. Выбирайте либо то, либо то. Если у Вас не большие объемы, то можете хранить vector c нужными строками и std::hash/map со строками, в качестве значений которых будут индексы в векторе.
Ответ написан
Ramires
@Ramires
Если я правильно понял, Вам нужна FIFO-очередь. Могу ошибаться, но посмотрите std::queue(если элементы по очереди извлекаются) или std::vector, std::list(насколько я помню, в них порядок не меняется). Уже в очередь можно запихнуть Вашу структуру с двумя полями.
Ответ написан
taliban
@taliban
php программист
Обычный массив числовой. Сохранение порядка 100%;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы