我有一个 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/