Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

checked_array_iterator (Clase)

La clase checked_array_iterator permite transformar una matriz o un puntero en un iterador comprobado. Utilice esta clase como contenedor (mediante la función make_checked_array_iterator) para matrices o punteros sin formato como una manera dirigida de comprobar y administrar advertencias de puntero no comprobadas en lugar de silenciar de manera global estas advertencias. Si es necesario, puede utilizar la versión no comprobada de esta clase, unchecked_array_iterator.

Nota Nota

Esta clase es una extensión de Microsoft de la Biblioteca estándar de C++. El código implementado mediante esta función no es portable a los entornos de compilación estándar de C++ que no admiten esta extensión de Microsoft. Para obtener un ejemplo en el que se 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;

Esta clase se define en el espacio de nombres stdext.

Para obtener más información y código de ejemplo acerca de la característica iterador comprobado, vea Iteradores activados.

En el ejemplo siguiente se muestra cómo definir y utilizar un iterador de matrices comprobado.

Si el destino no es suficientemente grande para contener todos los elementos que se van a copiar, como ocurriría si cambió 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.

// compile with: /EHsc /W4 /MTd
#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;
}
( 0 1 2 3 4 )
( 0 1 2 3 4 )

Para evitar la necesidad de la clase checked_array_iterator cuando se utilizan algoritmos de la Biblioteca estándar de C++, considere la posibilidad de usar vector en lugar de una matriz asignada dinámicamente. En el ejemplo siguiente se muestra cómo hacerlo:

// compile with: /EHsc /W4 /MTd

#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;
}
 0 1 2 3 4 5 6 7 8 9

Aa985928.collapse_all(es-es,VS.120).gifConstructores

checked_array_iterator

Construye un checked_array_iterator predeterminado o un checked_array_iterator a partir de un iterador subyacente.

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

difference_type

Tipo que proporciona la diferencia entre dos checked_array_iterator que hacen referencia a elementos del mismo contenedor.

puntero

Tipo que proporciona un puntero a un elemento direccionado por checked_array_iterator.

reference

Tipo que proporciona una referencia a un elemento direccionado por checked_array_iterator.

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

base

Recupera el iterador subyacente de su checked_array_iterator.

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

operator==

Comprueba dos checked_array_iterator para ver si son iguales.

operator!=

Comprueba dos checked_array_iterator para ver si son distintos.

':?'.<

Comprueba si el checked_array_iterator a la izquierda del operador es menor que el checked_array_iterator de la derecha.

':?'.>

Comprueba si el checked_array_iterator a la izquierda del operador es mayor que el checked_array_iterator de la derecha.

operator<=

Comprueba si el checked_array_iterator a la izquierda del operador es menor o igual que el checked_array_iterator de la derecha.

operator>=

Comprueba si el checked_array_iterator a la izquierda del operador es mayor o igual que el checked_array_iterator de la derecha.

operator*

Devuelve el elemento que direcciona un checked_array_iterator.

operator->

Devuelve un puntero al elemento direccionado por checked_array_iterator.

operator++

Incrementa el checked_array_iterator al elemento siguiente.

operator--

Disminuye el checked_array_iterator al elemento anterior.

operator+=

Agrega un desplazamiento especificado a un checked_array_iterator.

operator+

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

operator-=

Disminuye un desplazamiento especificado de un checked_array_iterator.

operator-

Disminuye un desplazamiento de un iterador y devuelve el nuevo checked_array_iterator que direcciona el elemento insertado en la nueva posición de desplazamiento.

operator[]

Devuelve una referencia a un desplazamiento de elemento con respecto al elemento direccionado por checked_array_iterator un número especificado de posiciones.

Encabezado: <iterator>

Espacio de nombres: stdext

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft