Compartilhar via


checked_array_iterator Class

O checked_array_iterator classe permite transformar uma matriz ou ponteiro em um iterador verificado.

ObservaçãoObservação

Essa classe é uma extensão da Microsoft para a biblioteca C++ padrão.Código implementado usando esse algoritmo não é portátil.Para obter um exemplo que demonstrar como escrever código que não requer o uso dessa classe, consulte o segundo exemplo abaixo.

template <class _Iterator>
    class checked_array_iterator
        : public iterator<
            typename iterator_traits<_Iterator>::iterator_category, 
            typename iterator_traits<_Iterator>::value_type, 
            typename iterator_traits<_Iterator>::difference_type, 
            typename iterator_traits<_Iterator>::pointer, 
            typename iterator_traits<_Iterator>::reference>

Comentários

Essa classe é definida na stdext namespace.

Para obter mais informações sobre o recurso iterador check, consulte Iteradores selecionados.

Exemplo

O exemplo a seguir mostra como definir e usar um iterador matriz verificada.

Se o destino não é suficientemente grande para conter todos os elementos que estão sendo copiados, como seria o caso se você tiver alterado a linha:

copy(a, a + 5, checked_array_iterator<int*>(b, 5));

to

copy(a, a + 5, checked_array_iterator<int*>(b, 4));

Ocorrerá um erro de tempo de execução.

// checked_array_iterator_overview.cpp
// compile with: /EHsc
#include <algorithm>
#include <iostream>

using namespace std;
using namespace stdext;

int main() {
   int a[]={0, 1, 2, 3, 4};
   int b[5];
   copy(a, a + 5, checked_array_iterator<int*>(b, 5));

   cout << "(";
   for (int i = 0 ; i < 5 ; i++)
      cout << " " << b[i];
   cout << " )" << endl;

   // constructor example
   checked_array_iterator<int*> checked_out_iter(b, 5);
   copy(a, a + 5, checked_out_iter);

   cout << "(";
   for (int i = 0 ; i < 5 ; i++)
      cout << " " << b[i];
   cout << " )" << endl;
}
  

Para evitar a necessidade do checked_array_iterator classe quando usando algoritmos da biblioteca C++ padrão, considere o uso de um vector em vez de uma matriz alocada dinamicamente.O exemplo a seguir demonstra como fazer isso.

// checked_array_iterator_2.cpp
// compile with: /EHsc

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    std::vector<int> v(10);
    int *arr = new int[10];
    for (int i = 0; i < 10; ++i)
    {
        v[i] = i;
        arr[i] = i;
    }

    // std::copy(v.begin(), v.end(), arr); will result in
    // warning C4996. To avoid this warning while using int *,
    // use the Microsoft extension checked_array_iterator.
    std::copy(v.begin(), v.end(),
              stdext::checked_array_iterator<int *>(arr, 10));

    // Instead of using stdext::checked_array_iterator and int *,
    // consider using std::vector to encapsulate the array. This will
    // result in no warnings, and the code will be portable.
    std::vector<int> arr2(10);    // Similar to int *arr = new int[10];
    std::copy(v.begin(), v.end(), arr2.begin());

    for (int j = 0; j < arr2.size(); ++j)
    {
        cout << " " << arr2[j];
    }
    cout << endl;

    return 0;
}
  

Aa985928.collapse_all(pt-br,VS.110).gifConstrutores

checked_array_iterator

Constrói um padrão checked_array_iterator ou checked_array_iterator de um iterador subjacente.

Aa985928.collapse_all(pt-br,VS.110).gifTypedefs

difference_type

Um tipo que fornece a diferença entre dois checked_array_iterators referindo-se elementos dentro do mesmo recipiente.

ponteiro

Um tipo que fornece um ponteiro para um elemento endereçado por um checked_array_iterator.

referência

Um tipo que fornece uma referência a um elemento endereçado por um checked_array_iterator.

Aa985928.collapse_all(pt-br,VS.110).gifFunções de membro

base

Recupera o iterador subjacente da sua checked_array_iterator.

Aa985928.collapse_all(pt-br,VS.110).gifOperadores

operador = =

Testes de dois checked_array_iterators de igualdade.

operador! =

Testes de dois checked_array_iterators desigualdade.

operador <

Testa se o checked_array_iterator no lado esquerdo do operador é menor que o checked_array_iterator no lado direito.

operador >

Testa se o checked_array_iterator no lado esquerdo do operador é maior que o checked_array_iterator no lado direito.

operador < =

Testa se o checked_array_iterator no lado esquerdo do operador é menor ou igual a checked_array_iterator no lado direito.

operador > =

Testa se o checked_array_iterator no lado esquerdo do operador é maior ou igual a checked_array_iterator no lado direito.

operador *

Retorna o elemento que um checked_array_iterator endereços.

operador - >

Retorna um ponteiro para o elemento abordado pelo checked_array_iterator.

operador + +

Incrementos de checked_array_iterator para o próximo elemento.

operador –

Decrementa o checked_array_iterator para o elemento anterior.

+ = operador

Adiciona um deslocamento especificado para um checked_array_iterator.

operador +

Adiciona um deslocamento para um iterador e retorna o novo checked_array_iterator o elemento inserido na nova posição de deslocamento de endereçamento.

operador =

Decrementa um deslocamento especificado de um checked_array_iterator.

operador-

Decrementa um deslocamento de um iterador e retorna o novo checked_array_iterator o elemento inserido na nova posição de deslocamento de endereçamento.

operador]

Retorna uma referência a um deslocamento de elemento do elemento endereçado por um checked_array_iterator por um número especificado de posições.

Requisitos

Cabeçalho: <iterator>

Namespace: stdext

Consulte também

Referência

Standard Template Library

Outros recursos

<iterator> Membros

os membros do checked_array_iterator