overloading << operador para contêineres stl c ++

Eu gostaria de poder imprimir o conteúdo de um conjunto / vetor / mapa usando cout <<. Não parece tão difícil para os designers de stl implementar: Supondo que << seja definido para T, << para um contêiner poderia apenas percorrer os elementos e imprimi-los usando ofstream <<.

Existe uma maneira fácil de imprimi-los que eu não conheço?

Se não, existe uma solução fácil? Eu li em lugares que estender classes stl é uma má idéia. É assim e por quê?

Como definir algo como uma função de impressão sobrecarregada? EDIT: Estou procurando uma função recursiva que possa lidar com contêineres de contêineres de ... Concordo que pessoas diferentes gostariam de formatos diferentes, mas algo substituível é melhor que nada

questionAnswers(8)

yourAnswerToTheQuestion