<p>Why does the C++ STL not provide any "tree" containers, and what's the best thing to use instead?</p>

<p>I want to store a hierarchy of objects as a tree, rather than use a tree as a performance enhancement...</p>

In a way, std::map is a tree (it is required to have the same performance characteristics as a balanced binary tree) but it doesn't expose other tree functionality.  The likely reasoning behind not including a real tree data structure was probably just a matter of not including everything in the stl.  The stl can be looked as a framework to use in implementing your own algorithms and data structures.
In general, if there's a basic library functionality that you want, that's not in the stl, the fix is to look at
BOOST
.
Otherwise, there's a
bunch
of
libraries
out
there
, depending on the needs of your tree.