he el siguiente código:un C++ mapa hash que preserve el orden de inserción
#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;
}
Sin embargo, yo estoy buscando algo que preserve el orden de modo que después puedo iterar sobre los elementos en el mismo orden en el cual fueron insertados. En mi ordenador el código anterior no conserva el orden, e imprime el siguiente:
0 1
11 0
21 2
pensé que tal vez podría utilizar un boost::multi_index_container
typedef multi_index_container<
int,
indexed_by<
hashed_unique<identity<int> >,
sequenced<>
>
> Map;
Puede alguien mostrar cómo implementar el código original utilizando este contenedor (o cualquier otro contenedor apropiado) para que el iterador siga el orden de inserción?
¿Está manteniendo una lista separada para rastrear el orden de inserción de la pregunta? – Qberticus