checked_array_iterator Class
checked_array_iterator Třída umožňuje transformaci matice nebo ukazatel do kontrolované iterace.
[!POZNÁMKA]
Tato třída je rozšíření společnosti Microsoft pro Standard C++ Library.Kód implementována pomocí tohoto algoritmu bude přenosný.Příklad je ukázkou napsat kód, který nevyžaduje použití této třídy viz druhý příklad níže.
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>
Poznámky
Tato třída je definována v stdext oboru názvů.
Další informace o funkci kontrolované iterační viz Zaškrtnuté iterátory.
Příklad
Následující příklad ukazuje, jak definovat a používat zaškrtnuté pole iterace.
Pokud cíl není dostatečně velká pro všechny kopírované prvky, jako by v případě změně řádku:
copy(a, a + 5, checked_array_iterator<int*>(b, 5));
na hodnotu
copy(a, a + 5, checked_array_iterator<int*>(b, 4));
Dojde k chybě za běhu.
// 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;
}
Potřebu zabránit checked_array_iterator třídy při použití algoritmů Standard C++ Library, zvažte použití vector namísto dynamicky přiřazené pole.Následující příklad ukazuje, jak postupovat.
// 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;
}
Konstruktory
Vytvoří výchozí checked_array_iterator nebo checked_array_iterator z podkladové iterátoru. |
Funkce TypeDef
Typ, který poskytuje rozdíl mezi dvěma checked_array_iterators odkazy na prvky ve stejném kontejneru. |
|
Typ, který obsahuje ukazatel na prvek adresovány checked_array_iterator. |
|
Typ, který poskytuje odkaz na prvek adresovány checked_array_iterator. |
Funkce členů
Obnoví základní iterační z jeho checked_array_iterator. |
Operátory
Dva testy checked_array_iterators pro rovnost. |
|
Dva testy checked_array_iterators pro nerovnost. |
|
Pokud testy checked_array_iterator na levé straně operátor je menší než checked_array_iterator na pravé straně. |
|
Pokud testy checked_array_iterator na levé straně operátoru je větší než checked_array_iterator na pravé straně. |
|
Pokud testy checked_array_iterator na levé straně operátor je menší než nebo rovno checked_array_iterator na pravé straně. |
|
Pokud testy checked_array_iterator na levé straně operátoru je větší než nebo rovno checked_array_iterator na pravé straně. |
|
Vrátí prvek checked_array_iterator adresy. |
|
Vrací ukazatel na prvek adresovány checked_array_iterator. |
|
Přírůstky checked_array_iterator na další prvek. |
|
Sníží checked_array_iterator k předchozímu prvku. |
|
Zadaný posun se přidá checked_array_iterator. |
|
Posun na iterace a vrátí novou checked_array_iterator adresování vložený prvek na nové pozice posunu. |
|
Sníží zadaný posun od checked_array_iterator. |
|
Sníží o posun od iterace a vrátí novou checked_array_iterator adresování vložený prvek na nové pozice posunu. |
|
Vrátí odkaz na prvek posun od prvku adresovány checked_array_iterator o určený počet pozic. |
Požadavky
Záhlaví: <iterator>
Obor názvů: stdext