Sto usando un C++ std::multimap
e devo eseguire il ciclo su due chiavi diverse. Esiste un modo efficace per fare questo oltre alla creazione di due gamme e il loop su questi intervalli separatamente?std :: multimap ottenendo due intervalli
questo è il modo sto facendo ora:
std::pair<std::multimap<String, Object*>::iterator,std::multimap<String, Object*>::iterator> range;
std::pair<std::multimap<String, Object*>::iterator,std::multimap<String, Object*>::iterator> range2;
// get the range of String key
range = multimap.equal_range(key1);
range2 = multimap.equal_range(key2);
for (std::multimap<String, Object*>::iterator it = range.first; it != range.second; ++it)
{
...
}
for (std::multimap<String, Object*>::iterator it2 = range2.first; it2 != range2.second; ++it2)
{
...
}
perché pensi che non sia efficiente? –
Questa è la mia prima volta che uso multimap, quindi non ho molta familiarità con loro. Farò molto lavoro in questi loop e mi chiedevo se ci fosse un'altra operazione in cui potresti ottenere due intervalli allo stesso tempo o qualcosa del genere. –
Puoi dare un esempio di chiavi in cui i tasti si sovrappongono, ma non sono uguali tra loro? Forse il mio cervello è inzuppato, ma sembra che un semplice controllo di uguaglianza sui tasti lo farebbe. Ha più senso per me se tu avessi limiti inferiori e superiori separati per ogni query. –