我正在尝试编写一个 if 条件,我想根据访问 map 的哪些元素来执行代码,例如对于仅包含元素 26 到 74 的 100 个元素的 map 。但我不想解决特定的键,而是解决 map 的某个部分。我应该使用 []
运算符来执行此操作吗?我试过了
if(map.size()/4 < iterator < map.size()*3/4){}
但这行不通。
最佳答案
只需将迭代器获取到您要检查的范围的开头和结尾即可
auto it = std::next(map.begin(), map.size() / 4);
auto end = std::next(map.begin(), map.size() * 3 / 4);
然后您可以像这样迭代该范围
for (; it != end; ++it)
{
// do stuff here
}
如果你想要一个计数器,你甚至不需要结束迭代器。这可以节省您在 map 中推进结束迭代器的成本,这可能会有所作为,尤其是在较大的 map 上。看起来像
auto it = std::next(map.begin(), map.size() / 4);
auto end = map.size() / 2;
for (size_t counter = 0; counter < end; ++it, ++counter)
{
// do stuff here
}
关于c++ - 如何在 C++ 中访问有序映射中的键范围/间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52743104/