#include <list>
#include <algorithm>
#include <iostream>
using namespace std;
// 삽입반복자
// 3개의 삽입반복자가 있다.
// 삽입반복자 함수버전의 구현
template<typename T> back_insert_iterator<T> xback_inserter( T& c )
{
// 후방 삽입반복자 객체를 만들어서 리턴해 준다.
// 타입을 넘겨주면서 생성자를 호출하여 리턴!
}
void main()
{
int x[5] = { 1, 2, 3, 4, 5 };
list<int> st(5, 1);
// 삽입반복자의 객체를 만든 후 copy를 호출해도 되지만
// 헬퍼함수를 사용해도 된다.
copy( x, x+5, xback_inserter(st) );
//front_insert_iterator<list<int> > p( st );
//back_insert_iterator<list<int> > p( st );
//insert_iterator<list<int> > p( st, st.begin() );
//*p = 10;
// 위코드대신push_front()를사용해도된다.
//st.push_front( 10 );
// 하지만여러개를계속넣고싶다면삽입반복자덕에copy()를사용할수있게된다.
//copy( x, x+5, p );
ostream_iterator<int> out( cout, " " );
copy( st.begin(), st.end(), out );
}