#include <iostream>
#include <cstdlib>
#include <string>
#include <set>

struct item
{
	int id;
	std::string name;

	bool operator < (item const& it) const
	{
		return id < it.id;
	}
};

int main()
{
	typedef std::set<item> set;

	set myset;

	std::cout << "Maximum size: " << myset.max_size() << std::endl;

	for (int i=1; i<10; i+=3)
	{
		item it;
		it.id = i;
		switch (rand() % 5)
		{
		case 0: it.name = "Markus"; break;
		case 1: it.name = "Kira"; break;
		case 2: it.name = "Lisa"; break;
		case 3: it.name = "Sandra"; break;
		case 4: it.name = "Tommy"; break;
		default:it.name = "Impossible"; break;
		}
		myset.insert(it);
	}

	item duplicate;
	duplicate.id = 4;
	duplicate.name = "Leonardo";
	std::pair<set::iterator, bool> ret = myset.insert(duplicate);
	std::cout << "should not be true: " << ret.second << std::endl;


	set::const_reverse_iterator it;
	int c=0;
	for (it=myset.rbegin();it != myset.rend(); ++it)
	{
		std::cout << it->id << " " << it->name << std::endl;
	}
}

