STL was not designed for inheritance. This may have changed, but last I checked destructors weren't virtual, for example, and some key information in some classes, like string, is private, making it difficult to implement certain behaviors in the inherited classes. Also, while generally fast, STL is missing some common place protections, or at least asserts in debug mode. The STL string class is completely lame. The collections classes, however, are generally nice, even if a little obscure. (Having a "common" interface may sound nice in theory but sometimes it's just plain annoying and cumbersome.) Personally, I don't like the STL interface. However I work with a guy who really likes it, so I suppose it's a matter of personal taste. (Even my co-worker has conceded, however, that the documentation of STL leaves much to be desired and many implementations, especially the Dinkumware VC6 version, are very obscure and difficult to debug.)