template <class ForwardIterator, class Size, class T> void uninitialized_fill_n (ForwardIterator first, Size n, const T& x);
template <class ForwardIterator, class Size, class T> ForwardIterator uninitialized_fill_n (ForwardIterator first, Size n, const T& x);
1
2
3
4
5
6
7
template < class ForwardIterator, class Size, class T >
void uninitialized_fill_n ( ForwardIterator first, Size n, const T& x )
{
for (; n--; ++first)
new (static_cast<void*>(&*first))
typename iterator_traits<ForwardIterator>::value_type(x);
}
1
2
3
4
5
6
7
8
template < class ForwardIterator, class Size, class T >
ForwardIterator uninitialized_fill_n ( ForwardIterator first, Size n, const T& x )
{
for (; n--; ++first)
new (static_cast<void*>(&*first))
typename iterator_traits<ForwardIterator>::value_type(x);
return first;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// uninitialized_fill_n example
#include <iostream>
#include <memory>
#include <string>
int main () {
// get block of uninitialized memory:
std::pair <std::string*,std::ptrdiff_t>
result = std::get_temporary_buffer<std::string>(3);
if (result.second>0) {
std::uninitialized_fill_n ( result.first, result.second, "c++ rocks!" );
for (int i=0; i<result.second; i++)
std::cout << result.first[i] << '\n';
std::return_temporary_buffer(result.first);
}
return 0;
}
c++ rocks! c++ rocks! c++ rocks!