If you are inheriting from a class, it should (usually) have a virtual destructor. But for efficiency reasons STL containers don't define virtual destructors.

So that's one reason. There may be others.