Sto iterando su una mappa C++. Dire che voglio ottenere le chiavi presenti nella mappa tranne il primo 2. Le chiavi sono ordinate sulla mappa. Quindi ho pensato di usare qualcosa di simile:Come eseguire iterazioni su un set specifico di chiavi in mappe C++?
map<int, int> table;
for(auto i = table.begin()+2; i != table.end(); i++)
cout<<i->first<<"\t"<<i->second<<endl;
Anche se questo funziona con i vettori, si genera un errore con le mappe a causa l'operatore '+' non in corso di attuazione per le mappe. Un modo per ottenere il risultato è:
auto i = table.begin();
int count = 0;
while(count < 2 && i != table.end()){
count++;
i++;
}
for(; i!=table.end(); i++)
cout<<i->first<<"\t"<<i->second<<endl;
Esiste un altro modo efficace per implementarlo?
Sto avendo un po' di tempo a pensare duro di un caso d'uso per questo; sei sicuro che 'map' è la struttura dati giusta qui? 'map's in C++ capita di essere iterabile nell'ordine, ma le operazioni' map' che non possono essere fatte anche con 'unordered_map's mi fanno un po 'nausea, perché il punto di una' mappa' è * non * per essere una serie ordinata di tuple (che è più o meno ciò che 'priority_queue' è per) ma per essere una * mappatura * dalle chiavi ai valori. –