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