Condividi tramite


uninitialized_fill_n

Copia gli oggetti di un valore specificato in un numero specificato di elementi di un intervallo di destinazione non inizializzato.

template<class FwdIt, class Size, class Type> 
   void uninitialized_fill_n( 
      ForwardIterator _First,  
      Size _Count, 
      const Type& _Val 
   );

Parametri

  • _First
    Iteratore in avanti che punta al primo elemento dell'intervallo di destinazione da inizializzare.

  • _Count
    Numero di elementi da inizializzare.

  • _Val
    Valore da utilizzare per inizializzare l'intervallo di destinazione.

Note

Questo algoritmo consente la separazione dell'allocazione della memoria dalla costruzione di un oggetto.

La funzione di modello consente di gestire in modo efficace quanto segue:

while ( 0 < count-- )
   new ( ( void * )&*_First ++ )
      iterator_traits<ForwardIterator>::value_type( _Val );

a meno che il codice non generi un'eccezione. In tal caso, tutti gli oggetti creati vengono eliminati e l'eccezione viene generata nuovamente.

Esempio

// memory_uninit_fill_n.cpp
// compile with: /EHsc /W3
#include <memory>
#include <iostream>

using namespace std;

class Integer {   // No default constructor
public:
   Integer( int x ) : val( x ) {}
   int get( ) { return val; }
private:
   int val;
};

int main() {
   const int N = 10;
   Integer val ( 60 );
   Integer* Array = ( Integer* ) malloc( N * sizeof( int ) );
   uninitialized_fill_n( Array, N, val );  // C4996
   int i;
   cout << "The uninitialized Array contains: ";
   for ( i = 0 ; i < N; i++ )
      cout << Array [ i ].get( ) <<  " ";
}

Output

The uninitialized Array contains: 60 60 60 60 60 60 60 60 60 60 

Requisiti

Intestazione: <memory>

Spazio dei nomi: std