uninitialized_fill_n
原型
template <class ForwardIterator, class Size, class T>
ForwardIterator uninitialized_fill_n(ForwardIterator first, Size n,
const T& x);
描述
在 C++ 中,运算符new为对象分配内存,然后通过调用构造函数在该位置创建对象。但是,有时将这两个操作分开很有用。 [1] 如果范围中的每个迭代器[first, first + n)指向未初始化的内存,那么uninitialized_fill_n在该范围内创建x的副本。也就是说,对于范围中的每个迭代器i,在[first, first + n), uninitialized_fill_n指向的内存位置创建x的副本i,方法是调用construct(&*i, x).
定义
定义在标准头文件 memory 中,以及非标准向后兼容头文件 algo.h 中。类型要求
-
ForwardIterator是 前向迭代器 的模型。
-
ForwardIterator是可变的。
-
Size是一种可转换为ForwardIterator的距离类型的整型。
-
ForwardIterator的值类型有一个接受类型为T.
的单个参数的构造函数。
-
前提条件n
-
[first, first + n)是非负的。
- 是有效的范围。[first, first + n)中的每个迭代器ForwardIterator都指向一个足够大的未初始化内存区域,可以存储
的值类型的值。
复杂度前提条件线性。正好个构造函数调用。
class Int {
public:
Int(int x) : val(x) {}
int get() { return val; }
private:
int val;
};
int main()
{
const int N = 137;
Int val(46);
Int* A = (Int*) malloc(N * sizeof(Int));
uninitialized_fill_n(A, N, val);
}
示例
备注
[1] 特别是,这种低级内存管理用于实现一些容器类。
另请参见, 分配器, construct,
destroy, uninitialized_copy,
uninitialized_fill
raw_storage_iterator
Copyright © 1999 Silicon Graphics, Inc. 保留所有权利。