Condividi tramite


checked_array_iterator Class

Il checked_array_iterator classe consente di trasformare una matrice o un puntatore in un iteratore checked.

[!NOTA]

Questa classe è un'estensione Microsoft alla libreria Standard di C++.Codice implementato l'utilizzo di questo algoritmo non è portabile.Per un esempio che illustra come scrivere codice che non richiedono l'utilizzo di questa classe, vedere l'esempio riportato di seguito.

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>

Note

Questa classe è definita nel stdext lo spazio dei nomi.

Per ulteriori informazioni sulla funzionalità dell'iteratore checked, vedere Iteratori verificati.

Esempio

Nell'esempio riportato di seguito viene illustrato come definire e utilizzare un iteratore di matrice selezionata.

Se la destinazione non è sufficientemente grande da contenere tutti gli elementi da copiare, ad esempio potrebbe essere il caso se è stata modificata la riga:

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

in

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

Si verificherà un errore di runtime.

// 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;
}
  

Per evitare la necessità per il checked_array_iterator classe quando si utilizza gli algoritmi della libreria Standard di C++, si consiglia di utilizzare un vector anziché una matrice allocata in modo dinamico.Nell'esempio riportato di seguito viene illustrato come procedere.

// 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(it-it,VS.110).gifCostruttori

checked_array_iterator

Costruisce un valore predefinito checked_array_iterator o checked_array_iterator da un iteratore sottostante.

Aa985928.collapse_all(it-it,VS.110).gifDefinizioni typedef

difference_type

Un tipo che fornisce la differenza tra due checked_array_iterators, fare riferimento agli elementi all'interno del contenitore stesso.

pointer

Un tipo che fornisce un puntatore a un elemento affrontato da un checked_array_iterator.

Riferimento

Un tipo che fornisce un riferimento a un elemento affrontato da un checked_array_iterator.

Aa985928.collapse_all(it-it,VS.110).gifFunzioni membro

base

Consente di recuperare l'iteratore sottostante dalla sua checked_array_iterator.

Aa985928.collapse_all(it-it,VS.110).gifOperatori

operatore = =

Due prove checked_array_iterators per verificarne l'uguaglianza.

operatore! =

Due prove checked_array_iterators per stabilirne la disuguaglianza.

operatore <

Verifica se il checked_array_iterator sul lato sinistro dell'operatore è minore di checked_array_iterator sul lato destro.

operatore >

Verifica se il checked_array_iterator sul lato sinistro dell'operatore è maggiore di checked_array_iterator sul lato destro.

operatore < =

Verifica se il checked_array_iterator sul lato sinistro dell'operatore è minore o uguale al checked_array_iterator sul lato destro.

operatore > =

Verifica se il checked_array_iterator sul lato sinistro dell'operatore è maggiore o uguale al checked_array_iterator sul lato destro.

operator*

Restituisce l'elemento che un checked_array_iterator gli indirizzi.

operator->

Restituisce un puntatore all'elemento affrontata la checked_array_iterator.

operator++

Incrementi di checked_array_iterator all'elemento successivo.

Operator-

Decrementa il checked_array_iterator per l'elemento precedente.

+ = operatore

Aggiunge un offset specificato per un checked_array_iterator.

operatore +

Aggiunge un offset a un iteratore e restituisce il nuovo checked_array_iterator l'inserimento dell'elemento nella nuova posizione di offset di indirizzamento.

operatore =

Decrementa un offset specificato da un checked_array_iterator.

operatore-

Decrementa un offset da un iteratore e restituisce il nuovo checked_array_iterator l'inserimento dell'elemento nella nuova posizione di offset di indirizzamento.

operator[]

Restituisce un riferimento a un offset di elemento dall'elemento affrontato da un checked_array_iterator da un numero specificato di posizioni.

Requisiti

Intestazione: <iterator>

Spazio dei nomi: stdext

Vedere anche

Riferimenti

Libreria di modelli standard

Altre risorse

<iteratore> membri

membri di checked_array_iterator