gpt4 book ai didi

c++ - std::multimap 获取两个范围

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:26:30 26 4
gpt4 key购买 nike

我正在使用 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)
{
...
}

最佳答案

您开始使用的代码是最直接的。

如果您真的想在同一个循环中迭代两个范围,您可以创建一个自定义迭代器,它采用两个迭代器范围,迭代第一个直到完成,然后切换到第二个。这可能比它的值(value)更麻烦,因为您需要自己实现所有迭代器成员。

编辑:我想多了;只需将两个循环修改为一个循环即可。

for (std::multimap<String, Object*>::iterator it = range.first; it != range2.second; ++it)
{
if (it == range.second)
{
it = range2.first;
if (it == range2.second)
break;
}
...
}

关于c++ - std::multimap 获取两个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7336303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com