忽略元素的基于范围的 for 循环
range based for loop that ignores elements
我正在为自定义容器类型编写单元测试。 我想确保它包含正确数量的元素。
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));
。
相关文章:
- 在基于范围的for循环中使用结构化绑定声明
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- 基于范围的 for 循环unordered_map和引用
- C++基于范围的 for 循环和元素副本
- 实现基于链表的堆栈的基于范围的 for 循环
- 在基于范围的 for 循环期间插入 std::list 的后面
- 基于范围的 for 循环range_declaration中各种说明符之间的性能差异
- 避免在基于反向范围的for循环实现中悬挂参考
- C++ - 使用基于范围的 for 循环将字符值分配给向量中的字符串不会分配值
- 转到基于范围的 for 循环中的下一个迭代器
- 使用基于数组和范围的 For 循环替换一些基本代码行
- C++:返回一个基于范围 for 循环迭代器,其中包含继承对象
- 布尔值向量的基于范围 for 循环
- 在 c++ 中基于范围的 for 循环中使用引用作为控制变量
- C++11 基于范围的 for 循环,用于 std::list
- 堆分配数组的基于范围的 for 循环
- 关于在向量向量上使用基于范围的 for 循环
- 如何使用基于范围的for循环迭代Rapidjson文档(它本身就是一个JSON数组)
- 使用基于范围的for循环取消对矢量指针的引用