Articles of iterador

Por que o iterador do Java não é um iterável?

Por que a interface do Iterator não se estende Iterable ? O método iterator() poderia simplesmente retornar this . É de propósito ou apenas um descuido dos designers de Java? Seria conveniente poder usar um loop for-each com iteradores como este: for(Object o : someContainer.listSomeObjects()) { …. } onde listSomeObjects() retorna um iterador.

Como implementar corretamente os iteradores e const_iterators personalizados?

Eu tenho uma class de contêiner personalizado para o qual eu gostaria de escrever as classs iterator e const_iterator . Eu nunca fiz isso antes e não consegui encontrar um apropriado como fazer. Quais são as diretrizes sobre a criação do iterador e o que devo saber? Eu também gostaria de evitar a duplicação de […]

Iterador de nivelamento

Existe alguma implementação do iterador existente (talvez em reforço) que implementa algum tipo de iterador de nivelamento? Por exemplo: unordered_set<vector > s; s.insert(vector()); s.insert({1,2,3,4,5}); s.insert({6,7,8}); s.insert({9,10,11,12}); flattening_iterator<unordered_set<vector >::iterator> it( … ), end( … ); for(; it != end; ++it) { cout << *it << endl; } //would print the numbers 1 through 12

Por que os intervalos padrão do iterador são em vez de ?

Por que o padrão define end() como passado do final, em vez de no final real?

Java: adicionando elementos a uma coleção durante a iteração

É possível adicionar elementos a uma coleção enquanto iterar sobre ela? Mais especificamente, gostaria de fazer uma iteração sobre uma coleção e, se um elemento satisfizer uma determinada condição, quero adicionar alguns outros elementos à coleção e certificar-se de que esses elementos adicionados também sejam iterados. (Eu percebo que isso pode levar a um ciclo […]

Como implementar um iterador de estilo STL e evitar armadilhas comuns?

Fiz uma coleção para a qual desejo fornecer um iterador de access random no estilo STL. Eu estava procurando por um exemplo de implementação de um iterador, mas não encontrei nenhum. Eu sei sobre a necessidade de sobrecargas const de operadores [] e * . Quais são os requisitos para um iterador ser “estilo STL” […]

Por que usar iteradores em vez de índices de array?

Pegue as duas linhas de código a seguir: for (int i = 0; i < some_vector.size(); i++) { //do stuff } E isto: for (some_iterator = some_vector.begin(); some_iterator != some_vector.end(); some_iterator++) { //do stuff } Me disseram que o segundo caminho é o preferido. Por que exatamente isso é?

O que acontece se você chamar erase () em um elemento do mapa enquanto iterar do início ao fim?

No código a seguir, faço um loop em um mapa e teste se um elemento precisa ser apagado. É seguro apagar o elemento e manter a iteração ou preciso coletar as chaves em outro recipiente e fazer um segundo loop para chamar o erase ()? map::iterator pm_it; for (pm_it = port_map.begin(); pm_it != port_map.end(); pm_it++) […]

Regras de invalidação do iterador

Quais são as regras de invalidação do iterador para contêineres C ++? De preferência em um formato de lista de resumo. (Nota: Esta é uma input para o C ++ FAQ do Stack Overflow . Se você quiser criticar a idéia de fornecer um FAQ neste formulário, então o post no meta que iniciou tudo […]