Używam C++ std::multimap
i muszę pętli na dwa różne klucze. Czy istnieje skuteczny sposób na zrobienie tego innego niż tworzenie dwóch zakresów i przechodzenie między tymi zakresami oddzielnie?std :: multimap uzyskiwanie dwóch zakresów
ten sposób im to robić teraz:
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)
{
...
}
dlaczego uważasz, że to nie jest wydajne? –
To jest mój pierwszy kontakt z multimapami, więc nie jestem zbyt obeznany z nimi. Będę robił dużo pracy w tych pętlach i zastanawiałem się, czy jest inna operacja, w której można uzyskać dwa zakresy w tym samym czasie lub coś takiego. –
Czy możesz podać przykład klawiszy, w których klawisze nakładają się, ale nie są sobie równe? Może mój mózg jest rozmoczony, ale wygląda na to, że zrobi to prosta kontrola równości na klawiszach. To ma dla mnie więcej sensu, jeśli masz oddzielne dolne i górne granice dla każdego zapytania. –