Streams are amazing for formatted input/output operations. std::vector is an amazing dynamic generic container. std::string is an amazing class for handling text. (far surpirior to c-strings) std::shared_ptr is amazing for memory-management You can write your own container class and use the algorithms with little effort.