title: Should boost::ptr_vector be used in place std::vector all of the time?
body: <p>Just a conceptual question that I've been running into.  In my current project it feels like I am over-using the boost <code>smart_ptr</code> and <code>ptr_container</code> libraries.  I was creating <code>boost::ptr_vectors</code>
  in many different objects and calling the transfer() method to move certain pointers from one <code>boost::ptr_vector</code> to another.</p>
  
  <p>It is my understanding that it is important to clearly show ownership of heap allocated objects.</p>
  
  <p>My question is, would it be desirable to use these boost libraries to create heap-allocated members that belong to an object but then use normal pointers to these members via <code>get()</code> when doing any processing.</p>
  
  <p>For example...
  A game might have a collection of Tiles that belong to it.  It might make sense to create these tiles in a <code>boost::ptr_vector</code>.  When the game is over these tiles should be automatically freed.</p>
  
  <p>However if I want to put these Tiles in a Bag object temporarily, should I create another <code>boost::ptr_vector</code> in the bag and transfer the Game's Tiles to the Bag via <code>transfer()</code> or
  should I create a <code>std::vector&lt;Tile*&gt;</code> where the Tiles*'s reference the Tiles
  in the Game and pass that to the Bag?</p>
  
  <p>Thanks.</p>
  
  <p>**Edit
  I should point out that in my example The Game would have a Bag object as a member.  The Bag would only be filled with Tiles the game owns.  So the Bag would not exist without the Game.</p>