У меня есть следующий код:
#include <iostream>
#include <vector>
#include <algorithm>
int main( int argc, char* argv[] )
{
std::vector< int > obj;
obj.push_back( 10 );
obj.push_back( 20 );
obj.push_back( 30 );
std::for_each( obj.begin(), obj.end(), []( int x )
{
return x + 2;
} );
for( int &v : obj )
std::cout << v << " ";
std::cout << std::endl;
return 0;
}
Результат: 10, 20, 30
Я хочу изменить все элементы в векторе (obj), используя функции Lambda нового стандарта C ++ 11.
Это код реализации for_each
функции:
template<class InputIterator, class Function>
Function for_each(InputIterator first, InputIterator last, Function f)
{
for ( ; first!=last; ++first )
f(*first);
return f;
}
* сначала передается по значению и изменяется элемент, что является альтернативой for_each
я должен использовать, что у меня есть результат: 12, 22, 32?