Listing 10

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

typedef shared_ptr<int> sp_t;
typedef set<sp_t> set_t;

int main()
  { // demonstrate shared_ptr as key
  set_t set;
  for (int i = 0; i < 10; ++i)
    set.insert(sp_t(new int(i)));
  sp_t first = *set.begin();
  if (set.find(first) != set.end())
    cout << "found shared_ptr holding " << *first << '\n';
  else
    cout << "didnt' find shared_ptr holding " << *first << '\n';
  sp_t zero(new int(0));
  if (set.find(zero) != set.end())
    cout << "found shared_ptr holding " << *zero << '\n';
  else
    cout << "didnt' find shared_ptr holding " << *zero << '\n';
  return 0;
  }