
//
// To jest przykładowy kod z podrozdziału 21.7.3 „Utrzymywanie porządku przy użyciu kontenera set” książki
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include <fstream>
#include <iostream>
#include <iterator>
#include <string>
#include <set>

using namespace std;

//------------------------------------------------------------------------------

int main()
{
    string from, to;
    cin >> from >> to; // Pobiera nazwy plików źródłowego i docelowego.

    ifstream is(from.c_str()); // Tworzy strumień wejściowy.
    ofstream os(to.c_str());   // Tworzy strumień wyjściowy.

    istream_iterator<string> ii(is);     // Tworzy iterator wejściowy dla strumienia.
    istream_iterator<string> eos;        // wartownik wejścia
    ostream_iterator<string> oo(os," "); // Tworzy iterator wyjściowy dla strumienia.

    set<string> b(ii,eos);        // b jest zbiorem inicjowanym przez dane wejściowe.
    copy(b.begin() ,b.end() ,oo); // Kopiuje zawartość bufora na wyjście.
}


//------------------------------------------------------------------------------
