The following two simple programs sort all strings read from the standard input and print them without duplicates, by using two different containers. Compared with ordinary C or C++, the example does a lot of complex processing by using only a few statements:
- Using vector
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <iterator>
using namespace std;
void main()
{
vector<string> coll;
// read all words from the standard input
// - source: all strings until end-of-file (or error)
// - destination: coll (inserting)
copy(istream_iterator<string>(cin), // start of source
istream_iterator<string>(), // end of source
back_inserter(coll)); // destination
// vector<string> coll(istream_iterator<string> (cin), istream_iterator());
sort(coll.begin(), coll.end()); // sort elements
// print all elements without duplicates
// - source: coll
// - destination: standard output (with newline between elements)
unique_copy(coll.begin(), coll.end(), // source
ostream_iterator<string>(cout, "\n")); // // destination
cin.get();
}
- Using set
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
#include <set>
using namespace std;
void main()
{
// create a string set
// - initialized by all words from standard input
set<string> coll((istream_iterator<string>(cin)),
istream_iterator<string>());
// print all elements
copy(coll.cbegin(), coll.cend(),
ostream_iterator<string>(cout, "\n"));
}