Partager via


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

Voir aussi

Référence

Bibliothèque STL (Standard Template Library)