Sdílet prostřednictvím


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

Aa985928.collapse_all(cs-cz,VS.110).gifKonstruktory

checked_array_iterator

Vytvoří výchozí checked_array_iterator nebo checked_array_iterator z podkladové iterátoru.

Aa985928.collapse_all(cs-cz,VS.110).gifFunkce TypeDef

difference_type

Typ, který poskytuje rozdíl mezi dvěma checked_array_iterators odkazy na prvky ve stejném kontejneru.

ukazatel

Typ, který obsahuje ukazatel na prvek adresovány checked_array_iterator.

odkaz

Typ, který poskytuje odkaz na prvek adresovány checked_array_iterator.

Aa985928.collapse_all(cs-cz,VS.110).gifFunkce členů

Base

Obnoví základní iterační z jeho checked_array_iterator.

Aa985928.collapse_all(cs-cz,VS.110).gifOperátory

operátor ==

Dva testy checked_array_iterators pro rovnost.

operátor! =

Dva testy checked_array_iterators pro nerovnost.

operátor <

Pokud testy checked_array_iterator na levé straně operátor je menší než checked_array_iterator na pravé straně.

operátor >

Pokud testy checked_array_iterator na levé straně operátoru je větší než checked_array_iterator na pravé straně.

operátor < =

Pokud testy checked_array_iterator na levé straně operátor je menší než nebo rovno checked_array_iterator na pravé straně.

operátor > =

Pokud testy checked_array_iterator na levé straně operátoru je větší než nebo rovno checked_array_iterator na pravé straně.

operátor *

Vrátí prvek checked_array_iterator adresy.

operátor - >

Vrací ukazatel na prvek adresovány checked_array_iterator.

operátor ++

Přírůstky checked_array_iterator na další prvek.

operátor--

Sníží checked_array_iterator k předchozímu prvku.

operátor +=

Zadaný posun se přidá checked_array_iterator.

operátor +

Posun na iterace a vrátí novou checked_array_iterator adresování vložený prvek na nové pozice posunu.

operátor-=

Sníží zadaný posun od checked_array_iterator.

operátor-

Sníží o posun od iterace a vrátí novou checked_array_iterator adresování vložený prvek na nové pozice posunu.

operátor]

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

Viz také

Referenční dokumentace

Standardní šablona knihovny

Další zdroje

<iterator> Členové

checked_array_iterator členů