Ho il seguente codice:un C++ mappa di hash che preserva l'ordine di inserimento
#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;
}
Tuttavia, sto cercando qualcosa che preserva l'ordine in modo che dopo posso iterare gli elementi nello stesso ordine in cui sono stati inseriti. Sul mio computer il codice di cui sopra non conservare l'ordine e stampa il seguente:
0 1
11 0
21 2
ho pensato che forse avrei potuto usare un boost::multi_index_container
typedef multi_index_container<
int,
indexed_by<
hashed_unique<identity<int> >,
sequenced<>
>
> Map;
Qualcuno mi può mostrare come implementare il mio codice originale utilizzando questo contenitore (o qualsiasi altro contenitore appropriato) in modo che l'iteratore segua l'ordine di inserimento?
È necessario mantenere un elenco separato per tracciare l'ordine di inserimento dalla domanda? – Qberticus