桜、抹茶、白、日記

名古屋市在住のC++使いのcoderの日記だったもの。

std::back_inserter

[東方算程譚] トークン分割
http://blogs.wankuma.com/episteme/archive/2007/09/11/95398.aspx
http://blogs.wankuma.com/episteme/archive/2007/09/11/95446.aspx
http://blogs.wankuma.com/episteme/archive/2007/09/12/95611.aspx
http://blogs.wankuma.com/episteme/archive/2007/09/12/95680.aspx

std::back_inserterって何?だったので調べてみる。

#include <iterator>
#include <deque>
#include <list>
#include <algorithm>
#include <iostream>

int Dump( int );

int main( void )
{
	std::list< int >	lsValue;
	std::deque< int >	deqValue;

	for ( int i = 0; i < 5; ++i ) { lsValue.push_back( i ); }

#if 0
	std::copy( lsValue.begin(), lsValue.end(), std::front_inserter( deqValue ) );
#elif 0
	std::copy( lsValue.begin(), lsValue.end(), std::back_inserter( deqValue ) );
#else
	deqValue.assign( lsValue.size() );
	std::copy( lsValue.begin(), lsValue.end(), deqValue.begin() );
#endif
	std::for_each( deqValue.begin(), deqValue.end(), Dump );

	(void)::fgetc( stdin );
	return 0;
}

int Dump( int nValue )
{
	std::cout << nValue << std::endl;
	return 0;
}

成る程理解した。
std::back_inserterって STL標準講座―標準テンプレートライブラリを利用したC++プログラミング (Programmer’s SELECTION) には載っていないな。C++ライブラリクイックリファレンス については明日調べよう。
C++ライブラリクイックリファレンス にはちゃんと載っていた。Effective STL―STLを効果的に使いこなす50の鉄則 の第30項にも利用例が載っているな。