make_unchecked_array_iterator
Erstellt ein unchecked_array_iterator-Objekt, das von anderen Algorithmen verwendet werden kann.
Hinweis
Bei dieser Funktion handelt es sich um eine Microsoft-Erweiterung der C++-Standardbibliothek.Der Code, der mit dieser Funktion implementiert wird, ist nicht auf C++-Standardbuildumgebungen übertragbar, die die Microsoft-Erweiterung nicht unterstützen.
template <class Iter>
unchecked_array_iterator<Iter>
make_unchecked_array_iterator(
Iter Ptr
);
Parameter
- Ptr
Ein Zeiger auf das Zielarray.
Rückgabewert
Eine Instanz von unchecked_array_iterator.
Hinweise
Die make_unchecked_array_iterator-Funktion wird im stdext-Namespace definiert.
Diese Funktion akzeptiert einen unbearbeiteten Zeiger und umschließt ihn in einer Klasse, die keine Überprüfung ausführt und daher nichts optimiert. Sie deaktiviert jedoch auch Compilerwarnungen wie C4996. Dies ist daher eine zielgerichtete Methode zur Bearbeitung von nicht aktivierten Zeigerwarnungen, ohne diese global zu deaktivieren oder den Aufwand der Überprüfung in Kauf zu nehmen. Weitere Informationen und Codebeispiele finden Sie unter Überprüfte Iteratoren.
Beispiel
Im folgenden Beispiel wird vector erstellt und mit 10 Elementen gefüllt. Der Inhalt des Vektors wird mithilfe des Kopieralgorithmus in ein Array kopiert. Anschließend wird make_unchecked_array_iterator verwendet, um das Ziel anzugeben.
// make_unchecked_array_iterator.cpp
// compile with: /EHsc /W4 /MTd
#include <algorithm>
#include <iterator> // stdext::make_unchecked_array_iterator
#include <iostream>
#include <vector>
#include <string>
using namespace std;
template <typename C> void print(const string& s, const C& c) {
cout << s;
for (const auto& e : c) {
cout << e << " ";
}
cout << endl;
}
int main()
{
const size_t dest_size = 10;
int *dest = new int[dest_size];
vector<int> v;
for (int i = 0; i < dest_size; ++i) {
v.push_back(i);
}
print("vector v: ", v);
// COMPILER WARNING SILENCED: stdext::unchecked_array_iterator is marked as checked in debug mode
// (it performs no checking, so an overrun will trigger undefined behavior)
copy(v.begin(), v.end(), stdext::make_unchecked_array_iterator(dest));
cout << "int array dest: ";
for (int i = 0; i < dest_size; ++i) {
cout << dest[i] << " ";
}
cout << endl;
delete[] dest;
}
Ausgabe
vector v: 0 1 2 3 4 5 6 7 8 9
int array dest: 0 1 2 3 4 5 6 7 8 9
Anforderungen
Header: <Iterator>
Namespace: stdext