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;
}
Costruttori
Costruisce un valore predefinito checked_array_iterator o checked_array_iterator da un iteratore sottostante. |
Definizioni typedef
Un tipo che fornisce la differenza tra due checked_array_iterators, fare riferimento agli elementi all'interno del contenitore stesso. |
|
Un tipo che fornisce un puntatore a un elemento affrontato da un checked_array_iterator. |
|
Un tipo che fornisce un riferimento a un elemento affrontato da un checked_array_iterator. |
Funzioni membro
Consente di recuperare l'iteratore sottostante dalla sua checked_array_iterator. |
Operatori
Due prove checked_array_iterators per verificarne l'uguaglianza. |
|
Due prove checked_array_iterators per stabilirne la disuguaglianza. |
|
Verifica se il checked_array_iterator sul lato sinistro dell'operatore è minore di checked_array_iterator sul lato destro. |
|
Verifica se il checked_array_iterator sul lato sinistro dell'operatore è maggiore di checked_array_iterator sul lato destro. |
|
Verifica se il checked_array_iterator sul lato sinistro dell'operatore è minore o uguale al checked_array_iterator sul lato destro. |
|
Verifica se il checked_array_iterator sul lato sinistro dell'operatore è maggiore o uguale al checked_array_iterator sul lato destro. |
|
Restituisce l'elemento che un checked_array_iterator gli indirizzi. |
|
Restituisce un puntatore all'elemento affrontata la checked_array_iterator. |
|
Incrementi di checked_array_iterator all'elemento successivo. |
|
Decrementa il checked_array_iterator per l'elemento precedente. |
|
Aggiunge un offset specificato per un checked_array_iterator. |
|
Aggiunge un offset a un iteratore e restituisce il nuovo checked_array_iterator l'inserimento dell'elemento nella nuova posizione di offset di indirizzamento. |
|
Decrementa un offset specificato da un checked_array_iterator. |
|
Decrementa un offset da un iteratore e restituisce il nuovo checked_array_iterator l'inserimento dell'elemento nella nuova posizione di offset di indirizzamento. |
|
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