make_unchecked_array_iterator
Crée un unchecked_array_iterator qui peut être utilisé par d'autres algorithmes.
Notes
Cette fonction est une extension Microsoft de la bibliothèque C++ standard.Le code implémenté à l'aide de cette fonction ne peut pas être utilisé dans les environnements de build C++ standard qui ne prennent pas en charge cette extension Microsoft.
template <class Iter>
unchecked_array_iterator<Iter>
make_unchecked_array_iterator(
Iter Ptr
);
Paramètres
- Ptr
Pointeur vers le tableau de destination.
Valeur de retour
Instance de unchecked_array_iterator.
Notes
La fonction make_unchecked_array_iterator est définie dans l'espace de noms stdext.
Cette fonction accepte un pointeur brut et l'inclut dans une classe qui n'effectue aucune vérification. Outre l'optimisation qui en résulte, cela fait taire les avertissements du compilateur, tels que C4996. Il s'agit donc d'une méthode ciblée permettant de gérer les avertissements des pointeurs non vérifiés, sans tous les faire taire ou faire l'effort d'une vérification. Pour plus d'informations et d'exemples de code, consultez Itérateurs vérifiés.
Exemple
Dans l'exemple suivant, un vecteur est créé et rempli avec 10 éléments. Le contenu du vecteur est copié dans un tableau à l'aide de l'algorithme de copie, puis make_unchecked_array_iterator est utilisé pour spécifier la destination.
// 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;
}
Sortie
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
Configuration requise
En-tête : <iterator>
Espace de noms : stdext