相关疑难解决方法(0)

我应该使用std :: for_each吗?

我总是试图更多地了解我使用的语言(不同的样式,框架,模式等).我注意到我从未使用过,std::for_each所以我想也许我应该开始.在这种情况下的目标是扩展我的思想,而不是在某种程度上改进代码(可读性,表达性,紧凑性等).

因此,考虑到上下文,使用std::for_each简单的任务是一个好主意,比如打印出一个向量:

for_each(v.begin(), v.end(), [](int n) { cout << n << endl; }
Run Code Online (Sandbox Code Playgroud)

([](int n)作为lambda函数).代替:

for(int i=0; i<v.size(); i++) { cout << v[i] << endl; }
Run Code Online (Sandbox Code Playgroud)

我希望这个问题似乎没有意义.我想这几乎问了一个更大的问题......应的中级程序员使用的语言特性,即使他并不真的需要在这个时候只是让他能够理解该功能的时候,实际上可能会受益非浅更好它.虽然可能已经提出了这个更大的问题(例如这里).

c++ foreach lambda for-loop stl

42
推荐指数
4
解决办法
2万
查看次数

适用于基于范围的声明的样式

这个问题提到了C++ 11基于范围的显而易见的惯用法.

for (auto& elem: container) {
  // do something with elem
}
Run Code Online (Sandbox Code Playgroud)

不过,我一直怀疑你应该使用哪种参考.输入迭代器可以返回rvalues.尽管auto可以推导出引入的隐式类型const将绑定到右值,但这似乎不会发生.

使用完美转发是最好的通用做法吗?

for (auto && elem: container) {
  // do something with elem
}
Run Code Online (Sandbox Code Playgroud)

我觉得这里没有缺点,但看起来有点太可爱了.也许我还没有写好C++ 11.

c++ for-loop perfect-forwarding c++11

12
推荐指数
1
解决办法
950
查看次数

基于范围的循环如何与for-each循环不同?

最新的C++ 11规范定义了一种称为"基于范围的循环"的新型for循环.它的外观和机制似乎与其他语言中的for-each循环非常相似.

如果有的话,他们两个之间有什么区别?如果新名称没有差异?

编辑:为了澄清,我不是在寻找每个或std :: for_each的"基于c ++的范围"与其他语言之间的实现差异.相反,我想知道是否有一些隐藏的价值背后的事实,他们决定称这个新的c ++"功能"(或语法,或成语或任何你想称之为)"基于范围的循环"而不是"为每个循环"就像其他任何人似乎都在呼唤这些东西.

c++ for-loop c++11

5
推荐指数
2
解决办法
4641
查看次数

标签 统计

c++ ×3

for-loop ×3

c++11 ×2

foreach ×1

lambda ×1

perfect-forwarding ×1

stl ×1