Como obter informações em c ++ usando um iterador de acesso aleatório

Video: Programação em C - Aula 9 - Variáveis III - Tipos Primitivos do C - eXcript

A maioria dos recipientes permitem executar acesso aleatório dos dados que eles contêm. Por exemplo, a Acesso aleatório exemplo mostra que é possível criar uma iterator e em seguida, adicionar ou subtrair o offset atual para obter valores dentro do recipiente que iterator suporta:

#incluir #incluir usando espaço de nomes std-int main () {vetor Palavras-Words.push_back ("Azul") -Words.push_back ("Verde") -Words.push_back ("Cerceta") -Words.push_back ("Tijolo") -Words.push_back ("Roxa") -Words.push_back ("Castanho") -Words.push_back ("Cinza claro") - // Definir um iterator.vector aleatório:: iterator Iter = Words.begin () - // Acesso points.Iter aleatória + = 5-cout lt; lt; * Iter lt; lt; endl-Iter - = 2-cout lt; lt; * Iter lt; lt; endl-retorno 0-}

Neste caso, o vetor, Palavras, contém uma lista de sete itens. O código cria uma iterator para Palavras nomeado Iter. Em seguida, adiciona ou subtrai o iterator offset e exibe a tela de saída. Aqui está o que você vê quando você executar este exemplo:

BrownBrick

Às vezes você precisa para executar uma tarefa especial usando um de acesso aleatório iterator. Por exemplo, você pode querer criar uma função especial para somar os membros da vetor ou apenas uma série de membros dentro vetor.

Neste caso, você deve criar uma função especializada para executar a tarefa da seguinte forma porque a biblioteca padrão não inclui quaisquer funções para fazer isso por você, como mostrado na RandomAccess2 exemplo:



#incluir #incluir using namespace std-modelo flutuar addIT (RandomAccessIterator início, fim RandomAccessIterator) {float Soma = 0-RandomAccessIterator Index - // Certifique-se de que os valores estão na order.If correcta (começam gt; final) {RandomAccessIterator temp-temp = começam-begin = end-end = temp-} para (Índice = iní- Índice! = final de Índice ++) Sum + = * Índice de retorno Sum-} int main () {vector Números-Numbers.push_back (1,0) -Numbers.push_back (2,5) -Numbers.push_back (3,75) -Numbers.push_back (1,26) -Numbers.push_back (9,101) -Numbers.push_back (11,3) -Numbers.push_back (1,52) - // Soma o members.float indivíduo Soma-Soma = addIT (Numbers.begin (), Numbers.end ()) - cout lt; lt; Soma lt; lt; endl-Soma = addIT (Numbers.end (), Numbers.begin ()) - cout lt; lt; Soma lt; lt; endl - // Soma um range.vector:: iteração Iter = Numbers.begin () - Iter + = 5-Soma = addIT (Iter, Numbers.end ()) - cout lt; lt; Soma lt; lt; endl-retorno 0-}

Este exemplo se baseia no exemplo anterior. Você ainda criar vetor, Números, e preenchê-lo com dados. No entanto, neste caso, você cria uma variável de saída, Soma, que contém o somatório dos elementos contidos Números.

Video: Iteradores const

AddIT () é uma função especial que aceita dois RandomAccessIterator valores como entrada. Estas duas entradas representam um intervalo dentro do vetor que você deseja manipular de alguma forma. O exemplo simplesmente adiciona-los, mas você pode executar qualquer tarefa que você deseja. A saída é uma flutuador que contém o somatório.

AddIT () funciona como você espera. Você chamá-lo como faria com qualquer outra função e fornecer um ponto de partida e um ponto final dentro vetor. As duas primeiras chamadas para addIT somar a toda vetor, enquanto o terceiro cria um iterator, muda o seu deslocamento, e, em seguida, sintetiza um intervalo dentro vetor. Aqui é a saída a partir deste exemplo:

Video: Curso de Java - Aula 29 - Laço de repetição For I - eXcript

30.43130.43112.82

Um de acesso aleatório iterator pode ir em qualquer direção. Além disso, você pode trabalhar com membros individuais dentro do recipiente fornecido para iterator. Como resultado, as funções que você criar para iterator deve ser capaz de trabalhar com as entradas em qualquer ordem. Como você lida com esse requisito depende do tipo de função que você cria.


Publicações relacionadas