Compartir a través de


checked_array_iterator Class

El checked_array_iterator clase permite transformar una matriz o un puntero en un iterador comprobado.

[!NOTA]

Esta clase es una extensión de Microsoft para la biblioteca estándar de C++.Código implementado mediante este algoritmo no será portable.Para obtener un ejemplo que muestra cómo escribir código que no requiere el uso de esta clase, vea el segundo ejemplo siguiente.

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>

Comentarios

Esta clase se define en el stdext espacio de nombres.

Para obtener más información sobre la característica iterador comprobado, consulte Iteradores comprobados.

Ejemplo

En el ejemplo siguiente se muestra cómo definir y utilizar un iterador de la matriz activada.

Si el destino no es lo suficientemente grande como para contener todos los elementos que se está copiados, como sería el caso si cambia la línea:

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

por

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

Se producirá un error en tiempo de ejecución.

// 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 la necesidad de la checked_array_iterator de clases al utilizar algoritmos de la biblioteca estándar de C++, considere el uso de un vector en lugar de una matriz asignada dinámicamente.En el ejemplo siguiente se muestra cómo hacerlo:

// 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(es-es,VS.110).gifConstructores

checked_array_iterator

Construye un valor predeterminado checked_array_iterator o un checked_array_iterator desde un iterador subyacente.

Aa985928.collapse_all(es-es,VS.110).gifTypedefs

difference_type

Un tipo que proporciona la diferencia entre dos checked_array_iterators que hace referencia a elementos dentro del mismo contenedor.

pointer

Un tipo que proporciona un puntero a un elemento dirigido por un checked_array_iterator.

Referencia .

Un tipo que proporciona una referencia a un elemento dirigida por un checked_array_iterator.

Aa985928.collapse_all(es-es,VS.110).gifFunciones miembro

base

Recupera el iterador subyacente de su checked_array_iterator.

Aa985928.collapse_all(es-es,VS.110).gifOperadores

operador ==

Pruebas de dos checked_array_iterators son iguales.

operador! =

Pruebas de dos checked_array_iterators de desigualdad.

operador <

Comprueba si el checked_array_iterator en el lado izquierdo del operador es menor que el checked_array_iterator en el lado derecho.

operador >

Comprueba si el checked_array_iterator en el lado izquierdo del operador es mayor que el checked_array_iterator en el lado derecho.

operador < =

Comprueba si el checked_array_iterator en el lado izquierdo del operador es menor o igual a la checked_array_iterator en el lado derecho.

operador > =

Comprueba si el checked_array_iterator en el lado izquierdo del operador es mayor o igual a la checked_array_iterator en el lado derecho.

operator*

Devuelve el elemento que un checked_array_iterator las direcciones.

operator->

Devuelve un puntero al elemento dirigido por el checked_array_iterator.

operator++

Incrementos de la checked_array_iterator en el siguiente elemento.

operador--

Disminuye la checked_array_iterator para el elemento anterior.

operador +=

Agrega un desplazamiento especificado a un checked_array_iterator.

operador +

Agrega un desplazamiento a un iterador y devuelve el nuevo checked_array_iterator abordar el elemento insertado en la nueva posición de desplazamiento.

operador =

Reduce un desplazamiento especificado de un checked_array_iterator.

operador-

Reduce un desvío desde un iterador y devuelve el nuevo checked_array_iterator abordar el elemento insertado en la nueva posición de desplazamiento.

operator[]

Devuelve una referencia a un desplazamiento del elemento en el elemento dirigida por un checked_array_iterator por un número de posiciones especificado.

Requisitos

Encabezado: <iterator>

Espacio de nombres: stdext

Vea también

Referencia

Biblioteca de plantillas estándar

Otros recursos

miembros de <iterador>

miembros de checked_array_iterator