我使用的是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,所以我不太熟悉它们。我会在这些循环中做很多工作,我想知道是否有另一种操作可以在同一时间或两者之间获得两个范围。 –
你可以给出一个钥匙重叠的例子,但不相等吗?也许我的大脑是湿漉漉的,但它似乎是一个简单的平等检查的关键会做到这一点。对于每个查询,如果您有单独的上限和下限,对我来说更有意义。 –