C++11 基于范围的 for 循环 : how to ignore value?

标签 c++ c++11 for-loop

我有一个 C++ 容器,我想运行一个循环的次数与该容器中的元素数相同。但是我不关心循环期间容器中的值。例如:

for (const auto& dummy : input) {
    cout << '.';
}

唯一的问题是,dummy 是一个未使用的变量,我已指示编译器禁止使用这些变量。

我想到的两个不雅的解决方案是在循环体中说 (void)dummy; 以使编译器静音,或者使用旧式的 for 循环从 0 到 距离(开始(输入),结束(输入))

我尝试省略变量名,但编译失败(不足为奇)。

我正在使用 GCC 4.7.2。

最佳答案

不需要显式循环。

use std::begin;
use std::end;
std::cout << std::string(std::distance(begin(input), end(input)), '.');

或者在非通用上下文中:

std::cout << std::string(input.size(), '.');

如果你想在循环中做一些更复杂的事情,就用(void)dummy; , 真的。它清晰众所周知并且有效

另请参阅 <algorithm> ;就这些功能而言,您正在实现的可能会更好地实现。 C++ Seasoning这是一个很好的话题。

关于C++11 基于范围的 for 循环 : how to ignore value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22856977/

相关文章:

c++ - 我可以制作一个宏来执行调试或发布代码吗?

c++ - 关于在不调用复制构造函数的情况下返回 STL 容器数据成员

java - 从存储在数组列表中的对象调用方法

c++ - 在没有实例的情况下调用无状态 lambda(仅类型)

c++ - 指向不可变类型的共享指针具有值语义

Java循环效率

javascript - 当我达到数字的倍数时在 JavaScript 循环中添加新行

c++ - 通过间接使指针集无效

c++ 打洞UDP(RTP)

c++ - 如何避免需要初始化初始化列表中的成员对象?