我使用的是C++ std::multimap
,我必須遍歷兩個不同的鍵。有沒有一種有效的方式來做到這一點,而不是創建兩個範圍並單獨循環這些範圍?std :: multimap獲取兩個範圍
這是即時通訊的方式做現在:
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)
{
...
}
你爲什麼覺得效率不高? –
這是我第一次使用multimap,所以我不太熟悉它們。我會在這些循環中做很多工作,我想知道是否有另一種操作可以在同一時間或兩者之間獲得兩個範圍。 –
你可以給出一個鑰匙重疊的例子,但不相等嗎?也許我的大腦是溼漉漉的,但它似乎是一個簡單的平等檢查的關鍵會做到這一點。對於每個查詢,如果您有單獨的上限和下限,對我來說更有意義。 –