忽略元素的基于范围的 for 循环

range based for loop that ignores elements

本文关键字:范围 for 循环 于范围 元素      更新时间:2023-10-16

我正在为自定义容器类型编写单元测试。 我想确保它包含正确数量的元素。

int count = 0;
for (const auto &el : region) {
++count;
}
// Check that count is the right number

由于此代码不对"el"执行任何操作,因此我收到有关未使用变量的编译器警告。 如何在不声明像"el"这样的"变量别名"的情况下编写基于范围的 for 循环?

显式使用迭代器的老式 for 循环显然可以解决这个问题,但我只是想知道是否可以使用基于范围的 for 来完成。

至少有两种方法可以禁止显示警告:

for ([[maybe_unused]] const auto &el : region) // C++17 or newer
{
// ...
}

for (const auto &el : region)
{
(void)el;
// ...
}

但正如 @Jarod42 的评论中所述,如果您的容器具有适当的迭代器,则可以改用std::distance(std::begin(region), std::end(region));