Freigeben über


checked_array_iterator Class

Die checked_array_iterator -Klasse können Sie ein Array oder Zeiger in einem checked Iterators zu verwandeln.

HinweisHinweis

Diese Klasse ist eine Microsoft-Erweiterung der Standard-C++-Bibliothek.Code, der mit diesem Algorithmus implementiert ist nicht portabel.Ein Beispiel demonstriert, wie Sie Code schreiben, die die Verwendung dieser Klasse nicht erforderlich ist, finden Sie im zweite Beispiel unten.

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>

Hinweise

Diese Klasse wird definiert, der Stdext Namespace.

Weitere Informationen zu den checked Iterators-Funktion finden Sie unter Überprüfte Iteratoren.

Beispiel

Das folgende Beispiel veranschaulicht, wie definieren und verwenden einen Iterator aktivierten Array.

Wenn das Ziel nicht groß genug für alle kopierten Elemente ist, wäre z. B. der Fall, wenn Sie die Zeile geändert:

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

zu

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

Es wird ein Laufzeitfehler auftreten.

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

Zur Vermeidung der Notwendigkeit der checked_array_iterator Klasse bei der C++-Standardbibliothek Algorithmen verwenden, sollten Sie eine vector anstelle eines dynamisch zugewiesenen Arrays.Im folgenden Beispiel wird veranschaulicht, wie Sie dafür vorgehen müssen.

// 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(de-de,VS.110).gifKonstruktoren

checked_array_iterator

Erstellt eine standardmäßige checked_array_iterator oder ein checked_array_iterator aus einem zugrunde liegenden Iterator.

Aa985928.collapse_all(de-de,VS.110).gifTypedefs

difference_type

Ein Typ, der die Differenz zwischen zwei checked_array_iterators verweisen auf Elemente innerhalb desselben Containers.

pointer

Ein Typ, der einen Zeiger auf ein Element durch ein checked_array_iterator.

-Referenz

Ein Typ, der einen Verweis auf ein Element durch ein checked_array_iterator.

Aa985928.collapse_all(de-de,VS.110).gifMember-Funktionen

base

Stellt den zugrunde liegenden Iterator aus seiner checked_array_iterator.

Aa985928.collapse_all(de-de,VS.110).gifOperatoren

Operator ==

Testet zwei checked_array_iterators auf Gleichheit.

Operator! =

Testet zwei checked_array_iterators auf Ungleichheit.

Operator <

Testet, ob die checked_array_iterator auf der linken Seite des Operators ist kleiner als die checked_array_iterator auf der rechten Seite.

Operator >

Testet, ob die checked_array_iterator auf der linken Seite des Operators ist größer als die checked_array_iterator auf der rechten Seite.

Operator < =

Testet, ob die checked_array_iterator auf der linken Seite des Operators ist kleiner oder gleich der checked_array_iterator auf der rechten Seite.

Operator > =

Testet, ob die checked_array_iterator auf der linken Seite des Operators ist größer als oder gleich der checked_array_iterator auf der rechten Seite.

operator*

Gibt das Element zurück, das ein checked_array_iterator Adressen.

operator->

Gibt einen Zeiger auf das Element durch die checked_array_iterator.

operator++

Erhöht die checked_array_iterator auf das nächste Element.

Operator--

Verringert die checked_array_iterator in das vorherige Element.

Operator +=

Fügt einen angegebenen Offset, eine checked_array_iterator.

Operator +

Fügt einen Offset auf einen Iterator und gibt die neue checked_array_iterator das eingefügte Element an die neue Offsetposition Adressierung.

Operator =

Dekrementiert den Wert einer angegebenen Offset aus einer checked_array_iterator.

Operator-

Dekrementiert einen Offset von Iteratoren und gibt das neue checked_array_iterator das eingefügte Element an die neue Offsetposition Adressierung.

operator[]

Gibt einen Verweis auf ein Element-Offset aus dem Element durch ein checked_array_iterator einer angegebenen Anzahl von Positionen.

Anforderungen

Header: <iterator>

Namespace: Stdext

Siehe auch

Referenz

Standardvorlagenbibliothek

Weitere Ressourcen

<iterator> Member

checked_array_iterator Member