![]() |
1
10
使用 boost::bind 使用std::for_,每个都以一种干净的方式解决了这个问题。或者你可以使用 BOOST_FOREACH . std::for_各自的示例:
BOOST_FOREACH的示例:
|
![]() |
2
10
不过,它也可以走相反的路。假设您从一个只需要几行代码的操作开始。您不想费心创建一个只调用一次的函数,只是为了压缩循环,所以您可以编写如下代码:
然后,当您需要执行的操作变得更加复杂时,您会意识到将其拉入单独的函数是有意义的,因此您最终会
然后将其修改为与原始方法相同,以便进一步精简:
|
![]() |
3
5
像使用其他语言工具一样使用它。当它让你的生活更轻松时,就用它吧。当它变得麻烦时,做些别的事情。当需求发生变化时,以这种或那种方式重构循环并不是很难。 |
![]() |
4
3
与你的问题类似,我经常注意到C++中的“函子”模式/习惯用法实际上是笨拙的。这就是我期待的原因 Lambda Functions |
![]() |
5
2
我对算法中的很多东西也有同样的问题。它有一种令人讨厌的倾向,最终会被 更多 我无法证明,我们可以用适当的构造函数和析构函数,以及一些访问器来证明一个特殊的函子类(这是C++中一个中等的高级主题,它不能完全理解),只是为了避免循环的一行。 |
![]() |
6
1
也许你一开始就用了_each而不是transform。。。 |
![]() |
7
1
我从不使用std::for_(或者很少)。 我建议使用 Boost.Foreach 和经典的“for”结构。当C++ 0x出来时,可以考虑使用新的“OF”构造,使其更易于读取容器。 |
![]() |
8
0
|
![]() |
9
0
或者您可以等待C++0x并使用
|
|
Julia · 矢量中相加为总和S的值的数量 1 年前 |
![]() |
C_Rod · 在模板方法中确定STL容器中项目的数据类型 2 年前 |
![]() |
quantumwell · 将空向量放入std::map() 6 年前 |
![]() |
OutOfBound · 对未初始化内存使用算法的优点 6 年前 |
![]() |
DarthRubik · 在使用列表删除之后,迭代器如何不无效 6 年前 |