I shamelessly copied the delegate methods on my heap class from those on List
Its not STL yet, but its a start.
You can find some more detail and examples of the functions here, but here is a very basic example of the sort of stuff you can do with a combination of these delegate methods and the C# 2.0 anonymous delegates feature:
This creates a subset of a heap containing all the entries which started with the string "Fred".
If you then start to factor in the full closure power of anonymous delegates, (allowing you to use data from calling functions seamlessly in operations across your collections), you get a pretty strong programming model.
See Martin Fowler for more information on why closures are good things.