Para iterators… Pode olhar não assim em a primeira vez, mas os iterators são um tipo de mais natural. Quando você resolve um problema, você tende a pensar nos termos “processa todos os elementos de…”, ou matematicamente “para todos os elementos em…”. A única maneira convencional de fazer que é usar um laço. O laço do quando em línguas da C-família for demasiado geral; você tem executa algumas etapas no seus próprios. Para o laço em línguas da C-família é uma melhoria sintática pequena do quando. Em outros linguagens de programação, para o laço está um laço contado. Mas isto igualmente significa que você tem que transformar um índice ao elemento posicionado. Por causa daquele, você tende frequentemente a põr os elementos em alguma estrutura posicionada -- a uma disposição ou a um vetor.
Se você pensa mais sobre ele, qual sua realmente necessidade é um tipo do laço generalizado esse laços através de todos os elementos de um recipiente sem necessariamente preparar algum índice numérico. Se você personifica o processo, o trabalhador diz a um outro “dá-me seguinte”, e não “dar-me 3254th”. Este é exatamente o que os iterators são bons para. O iterator é tipo-limita de algum modo ao recipiente. Então você pode estar nao interessado em detalhes internos (se está posicionado para dentro, ou se é uma estrutura lig). Ou seja os iterators trazem mais abstração.
Infelizmente, os iterators são mais novos do que o núcleo de C++ e conseqüentemente lá não é nenhuns laço e sintaxe generalizados para fazer sintaticamente tudo deste mais aparente. Uma vez que você se habitua ao melhor sytax do laço generalizado (em outras línguas, como no pitão onde os iterators trabalham quase màgica, escondido), você falta realmente essa sintaxe em C++. O padrão novo de C++ está indo melhorá-lo um bocado.