Often, a hash map, list, vector, or stream may seem to be the heart of what you want to do, but just isn't powerful enough. This means you are thinking too much about the implementation and letting it limit you.
When a library data structure or class seems to do almost what you want but is too limited, write a more powerful class that does exactly what you want and implement it with the library class. Don't be afraid to write small, simple classes.
Examples: the section called Streams have limited putback ability in Chapter 3