大家都知道java和C#有for each这个命令吧,这个命令十分好用
for each(单个元素 it in 容器)
{
每个元素的操作;
}
昨天看了boost库的lambda和一些博客,瞬间毁掉我对C++的看法,原来用了lambda,这些功能可以轻松实现!!
比如显示vector容器vec的数据,然后加上4,再全部显示,正规代码这样写:
std::copy(vec.begin(), vec.end(), ostream_iterator<int>(std::cout , " "));
std::transform(vec.begin(), vec.end(),std::bind1st(std::plus<int>(),4));
std::copy(vec.begin(), vec.end(), ostream_iterator<int>(std::cout , " "));
现在改写如下,更加简单
using namespace boost::lambda;
std::for_each(vec.begin(), vec.end(), cout << _1 << " ");
std::for_each(vec.begin(), vec.end(), _1 = _1 +4);
std::for_each(vec.begin(), vec.end(), cout << _1 << " ");
简单了好多有木有!话说新标准加入了lambda,不过还是
觉得boost的lambda好用。
总之一句话就是C++的代码会越来越短,开发速度越来越快!!