um mapa de hash C ++ que preserva a ordem de inserção [duplicado]
Esta pergunta já tem uma resposta aqui:
A std :: map que controla a ordem de inserção? 14 respostasEu tenho o seguinte código
#include <iostream>
#include "boost/unordered_map.hpp"
using namespace std;
using namespace boost;
int main()
{
typedef unordered_map<int, int> Map;
typedef Map::const_iterator It;
Map m;
m[11] = 0;
m[0] = 1;
m[21] = 2;
for (It it (m.begin()); it!=m.end(); ++it)
cout << it->first << " " << it->second << endl;
return 0;
}
No entanto, estou procurando algo que preserve a ordem para que mais tarde eu possa interagir com os elementos na mesma ordem em que foram inseridos. No meu computador, o código acima não preserva o pedido e imprime o seguinte:
0 1
11 0
21 2
Pensei que talvez pudesse usar umboost::multi_index_container
typedef multi_index_container<
int,
indexed_by<
hashed_unique<identity<int> >,
sequenced<>
>
> Map;
lguém pode me mostrar como implementar meu código original usando esse contêiner (ou qualquer outro contêiner apropriado) para que o iterador siga a ordem de inserçã