uninitialized_fill_n
Copia gli oggetti di un valore specificato il numero specificato di elementi in un intervallo di destinazione non inizializzate.
template<class FwdIt, class Size, class Type>
void uninitialized_fill_n(
ForwardIterator _First,
Size _Count,
const Type& _Val
);
Parametri
_First
Un iteratore avanti destinato al primo elemento nell'intervallo di destinazione da avviare._Count
Il numero di elementi da inizializzare._Val
Il valore da utilizzare per inizializzare l'intervallo di destinazione.
Note
Questo algoritmo consente la separazione di allocazione della memoria dalla costruzione di un oggetto.
La funzione di modello esegue effettivamente:
while ( 0 < count-- )
new ( ( void * )&*_First ++ )
iterator_traits<ForwardIterator>::value_type( _Val );
a meno che il codice genera un'eccezione.In tal caso, tutti gli oggetti costruiti vengono eliminate e l'eccezione viene generata.
uninitialized_fill_n dispone di due form correlati:
Per informazioni su come queste funzioni si comportano, vedere Iteratori verificati.
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: deviazione standard