Udostępnij za pośrednictwem


checked_array_iterator Class

checked_array_iterator Klasy pozwala przekształcić checked iteratora tablicy lub wskaźnika.

[!UWAGA]

Ta klasa jest rozszerzenie Microsoft do standardowa biblioteka języka C++.Nie będzie przenośne kod implementowane przy użyciu tego algorytmu.Na przykład, wykazujące, jak napisać kod, który nie wymaga użycia tej klasy Zobacz drugi przykład poniżej.

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>

Uwagi

Ta klasa jest zdefiniowany w stdext obszaru nazw.

Aby uzyskać więcej informacji na temat funkcji iteratora checked, zobacz Iteratory zaznaczone.

Przykład

Następujący przykład przedstawia sposób definiowania i użyć iteratora checked tablicy.

Jeśli miejsce docelowe nie jest wystarczająco duży, aby pomieścić wszystkie kopiowane elementy, takie jak byłoby zmianie linii:

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

Aby

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

Wystąpi błąd czasu wykonywania.

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

Aby uniknąć konieczności checked_array_iterator klasy przy użyciu algorytmów standardowa biblioteka języka C++, należy rozważyć użycie vector zamiast przydzielany dynamicznie tablicy.Poniższy przykład demonstruje, jak to zrobić.

// 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(pl-pl,VS.110).gifKonstruktory

checked_array_iterator

Tworzy domyślny checked_array_iterator lub checked_array_iterator z iteratora podstawowej.

Aa985928.collapse_all(pl-pl,VS.110).gifDefinicje TypeDef

difference_type

Typ, który stanowi różnicę między dwoma checked_array_iterators odnoszące się do elementów w tym samym kontenerze.

wskaźnik

Typ, który zawiera wskaźnik do elementu przez checked_array_iterator.

Odwołanie

Typ, który zawiera odwołanie do elementu przez checked_array_iterator.

Aa985928.collapse_all(pl-pl,VS.110).gifFunkcje składowe

Base

Odzyskuje podstawowej iteratora z jego checked_array_iterator.

Aa985928.collapse_all(pl-pl,VS.110).gifOperatory

operator ==

Dwa badania checked_array_iterators dla równości.

operator! =

Dwa badania checked_array_iterators dla nierówności.

operator <

Badania, jeśli checked_array_iterator po lewej stronie operatora jest mniej niż checked_array_iterator po prawej stronie.

operator >

Badania, jeśli checked_array_iterator po lewej stronie operatora jest większa niż checked_array_iterator po prawej stronie.

operator < =

Badania, jeśli checked_array_iterator po lewej stronie operatora jest mniejsza lub równa checked_array_iterator po prawej stronie.

operator > =

Badania, jeśli checked_array_iterator po lewej stronie operatora jest większa niż lub równa checked_array_iterator po prawej stronie.

operator *

Zwraca element checked_array_iterator adresy.

operator - >

Zwraca wskaźnik do elementu przez checked_array_iterator.

operator ++

Skoki checked_array_iterator do następnego elementu.

operator--

Dekrementuje checked_array_iterator do poprzedniego elementu.

operator +=

Dodaje określone przesunięcie do checked_array_iterator.

operator +

Dodaje wartość przesunięcia do iterację i zwraca nowy checked_array_iterator adresowania wstawiony element w nowe położenie przesunięcia.

operator-=

Dekrementuje określone przesunięcie z checked_array_iterator.

operator-

Dekrementuje przesunięcie z iteratora i zwraca nowy checked_array_iterator adresowania wstawiony element w nowe położenie przesunięcia.

operatora]

Zwraca odwołanie do przesunięcia elementu z elementu przez checked_array_iterator przez podaną liczbę pozycji.

Wymagania

Nagłówek: <iterator>

Obszar nazw: stdext

Zobacz też

Informacje

Standardowa biblioteka szablonu

Inne zasoby

<iterator> Członkowie

checked_array_iterator członkowie