Listing 11

#include <set>
#include <iostream>
using std::tr1::shared_ptr;
using std::set;
using std::cout;

int main()
  { // demonstrate comparison quirk
  shared_ptr<int> sp0((int*)0);
  shared_ptr<int> sp1((int*)0);
  if (sp0 == sp1)
    cout << "sp0 == sp1\n";
  if (sp0 < sp1)
    cout << "sp0 < sp1\n";
  else
    cout << "!(sp0 < sp1)\n";
  if (sp1 < sp0)
    cout << "sp1 < sp0\n";
  else
    cout << "!(sp1 < sp0)\n";

  // search a set
  set<shared_ptr<int> > my_set;
  my_set.insert(sp0);
  if (*my_set.begin() == sp1)
    cout << "sp1 is in set\n";
  else
    cout << "sp1 is not in set\n";
  if (my_set.find(sp1) == my_set.end())
    cout << "didn't find sp1 in set\n";
  else
    cout << "found sp1 in set\n";
  return 0;
  }