我正在使用C++的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)
{
...
}
typedef
可以消除更大部分的代码,并使代码显着更易读:typedef std::multimap<String, Object*>::iterator Iter
。 - Andriy Tylychko