【发布时间】:2019-07-16 20:04:20
【问题描述】:
我发现自己经常使用如下代码:
bool isFirst = true;
for(const auto &item: items)
{
if(!isFirst)
{
// Do something
}
// Normal processing
isFirst = false;
}
似乎应该有更好的方式来表达这一点,因为它是函数中的一种常见模式,就像“连接”一样。
【问题讨论】:
-
这就是为什么我很伤心
bools 没有--了... -
不应该是
else { /* Normal processing */ }吗?在这种情况下,您可以查看此答案(它跳过了最后一个元素,想法类似):stackoverflow.com/a/35372958/2956272 -
当我的代码需要特殊的第一个元素操作时(坦率地说,我可以用一只手计算过去五年中我需要它的次数并且仍然有手指剩余),我不使用远程。我使用迭代器、if-test 和嵌套的 while 循环。唯一引起头痛的地方是当所采取的行动是先行而不是替代时(即您正在使用的模型是这样的情况:第一个元素得到动作 A+B,其余元素得到 B,而不是第一个元素得到A,剩下的得到 B)。
-
谢谢大家。我认为在stackoverflow.com/questions/21215947/… 上发帖的@Ali 有很好的观点。将特殊情况移出循环是一个更好的主意。
标签: c++ for-loop c++11 range-based-loop