Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
boost::copy( data | filtered( [](const TestClass &a) { return a.iVal >= 5; } ), std::back_inserter(vec) );
boost::sort( vec, [](const TestClass &a1, const TestClass &a2) { return a1.sVal < a2.sVal; } );
#include <boost/range/adaptors.hpp>
#include <boost/range/algorithm.hpp>
#include <algorithm>
#include <iostream>
#include <vector>
struct TestClass
{
int iVal;
int sVal;
TestClass( int val ): iVal(val), sVal(val) {}
};
int main()
{
using namespace boost::adaptors;
TestClass data[] = {7, 6, 4, 3, 8};
std::vector<TestClass> vec;
boost::copy( data | filtered( [](const TestClass &a) { return a.iVal >= 5; } ), std::back_inserter(vec) );
boost::sort( vec, [](const TestClass &a1, const TestClass &a2) { return a1.sVal < a2.sVal; } );
boost::transform( vec, std::ostream_iterator<int>(std::cout, " "), [](const TestClass &a) { return a.iVal; } );
return 0;
}
В случае же linq производительность наверняка будет выше наивного подхода с выделением на каждом этапе буфера и копирования в него.
Еще один Linq для С++