Функция uninitialized_fill
Функция uninitialized_fill заполняет область
неинициализированной памяти заданным значением.
В первый параметр мы передаем итератор, указывающий
на начало области памяти, во второй - итератор,
указывающий на конец области, а в третий -
значение, которым нужно заполнить память.
Функция не конструирует объекты, а выполняет
копирующее присваивание в сырую память.
Синтаксис
uninitialized_fill(first, last, value);
Пример
Давайте выделим память под массив из 5
целых чисел, заполним её значением 3
и выведем результат:
#include <iostream>
#include <memory>
using namespace std;
int main()
{
allocator<int> alloc;
int* p = alloc.allocate(5);
uninitialized_fill(p, p + 5, 3);
for (int i = 0; i < 5; i++)
{
cout << p[i] << " ";
}
cout << endl;
for (int i = 0; i < 5; i++)
{
alloc.destroy(p + i);
}
alloc.deallocate(p, 5);
return 0;
}
Результат выполнения кода:
3 3 3 3 3
Пример
Давайте заполним неинициализированную память
символами 'a':
#include <iostream>
#include <memory>
using namespace std;
int main()
{
allocator<char> alloc;
char* p = alloc.allocate(5);
uninitialized_fill(p, p + 5, 'a');
for (int i = 0; i < 5; i++)
{
cout << p[i] << " ";
}
cout << endl;
for (int i = 0; i < 5; i++)
{
alloc.destroy(p + i);
}
alloc.deallocate(p, 5);
return 0;
}
Результат выполнения кода:
"a a a a a"
Смотрите также
-
функция
uninitialized_copy,
которая копирует объекты в неинициализированную память -
функция
construct_at,
которая конструирует объект в заданной памяти -
функция
destroy_at,
которая разрушает объект в заданной памяти -
класс
allocator,
который управляет выделением памяти