checked_array_iterator Class
O checked_array_iterator classe permite transformar uma matriz ou ponteiro em um iterador verificado.
Observaçã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;
}
Construtores
Constrói um padrão checked_array_iterator ou checked_array_iterator de um iterador subjacente. |
Typedefs
Um tipo que fornece a diferença entre dois checked_array_iterators referindo-se elementos dentro do mesmo recipiente. |
|
Um tipo que fornece um ponteiro para um elemento endereçado por um checked_array_iterator. |
|
Um tipo que fornece uma referência a um elemento endereçado por um checked_array_iterator. |
Funções de membro
Recupera o iterador subjacente da sua checked_array_iterator. |
Operadores
Testes de dois checked_array_iterators de igualdade. |
|
Testes de dois checked_array_iterators desigualdade. |
|
Testa se o checked_array_iterator no lado esquerdo do operador é menor que o checked_array_iterator no lado direito. |
|
Testa se o checked_array_iterator no lado esquerdo do operador é maior que o checked_array_iterator no lado direito. |
|
Testa se o checked_array_iterator no lado esquerdo do operador é menor ou igual a checked_array_iterator no lado direito. |
|
Testa se o checked_array_iterator no lado esquerdo do operador é maior ou igual a checked_array_iterator no lado direito. |
|
Retorna o elemento que um checked_array_iterator endereços. |
|
Retorna um ponteiro para o elemento abordado pelo checked_array_iterator. |
|
Incrementos de checked_array_iterator para o próximo elemento. |
|
Decrementa o checked_array_iterator para o elemento anterior. |
|
Adiciona um deslocamento especificado para um checked_array_iterator. |
|
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. |
|
Decrementa um deslocamento especificado de um checked_array_iterator. |
|
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. |
|
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