一連のレコードをデータベースにバッチ処理する必要がある状況に遭遇しました。stdアルゴリズムでこれをどのように達成できるのか疑問に思っています。
10002レコードが与えられた場合、処理のために100レコードのビンに分割し、残りは2のビンにします。
うまくいけば、次のコードは私が達成しようとしていることをよりよく説明するでしょう。私はイテレータ、ラムダ、あらゆる種類の最新のC++の楽しみを含むソリューションに完全にオープンです。
#include <cassert>
#include <vector>
#include <algorithm>
template< typename T >
std::vector< std::vector< T > > chunk( std::vector<T> const& container, size_t chunk_size )
{
return std::vector< std::vector< T > >();
}
int main()
{
int i = 0;
const size_t test_size = 11;
std::vector<int> container(test_size);
std::generate_n( std::begin(container), test_size, [&i](){ return ++i; } );
auto chunks = chunk( container, 3 );
assert( chunks.size() == 4 && "should be four chunks" );
assert( chunks[0].size() == 3 && "first several chunks should have the ideal chunk size" );
assert( chunks.back().size() == 2 && "last chunk should have the remaining 2 elements" );
return 0;
}