c++ - 如何在 C++ 中访问有序映射中的键范围/间隔?

标签 c++ dictionary

我正在尝试编写一个 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/

相关文章:

c++ - 常量和可变

c++ - 将 `basename` 与 __FILE__ 一起使用是否安全?

python : Can Dictionary be used for indexing?

python - 为什么我的字典值在循环后发生变化?

c++ - 检索映射的键(斯坦福 C++ 库)

c++ - 如何在 C++ 中创建自定义的 logic_error 派生类?

python - 是否可以从 C/C++ 调用 numba jited 函数?

c++ - 如何查看是否选中了 MFC 复选框

python - 如何提高脚本的效率?

python - 从局部变量创建 python 字典的最简洁方法