Este endereço pode ser devolvido ou salva em algum lugar em um objeto (identificador). Dessa forma o ponteiro do array (nome de matriz) não vai mudar a sua posição e a indexação usando o nome da matriz permanecerá OK. O medo do problema de indexação não vai estar lá. Para o código acima, o endereço retornado ou salvos, então, ser usado para ver se a memória dinâmica estava disponível. Você precisa de uma classe (um objeto instanciado a partir dele), que terá o ponteiro de digitalização e, em seguida, retornar ou salvar o endereço desejado. Tal objeto pode ser chamado de um iterador.
Na prática, iteradores para os recipientes da Biblioteca Container são mais complexas do que isso. Não vamos entrar em qualquer de tal complexidade aqui. O código a seguir dá a classe de um iterador simples para o problema acima: class Iter {public: int * retPtr; Iter (int indx, int * ptr) {int * iterPtr = ptr; for (int i = 0; i ++ iterPtr;} retPtr = iterPtr;} int * retrnPtr () {return retPtr;}};..
Há uma propriedade e dois métodos na classe O primeiro método é o construtor Tem como parâmetro um índice do elemento cujo ponteiro que você está procurando, eo ponteiro para a matriz de memória dinâmica. Na primeira instrução dentro do construtor, o ponteiro da matriz, o que aponta para o primeiro elemento da matriz é atribuída a um novo ponteiro em uma instrução de inicialização. É esta nova ponteiro que é incrementado e não o ponteiro para a matriz. O loop for no construtor incrementa o novo ponteiro um número de vezes igual à posição de índice (INDX) enviado como argumento.
A última instrução no construtor atribui o ponteiro última incrementado para a propriedade da classe. O segundo método na classe, retorna este valor final incrementado. É assim que funciona o nosso iterador. É preciso um novo ponteiro para uma posição e deixa-lo lá, e não levá-la de volta à sua posição inicial. Iterators práticos trabalhar de uma forma similar. Com iterators práticos, se você quiser mu