uninitialized_fill
原型
template <class ForwardIterator, class T>
void uninitialized_fill(ForwardIterator first, ForwardIterator last,
const T& x);
描述
在 C++ 中,运算符new为对象分配内存,然后通过调用构造函数在该位置创建对象。但是,有时将这两个操作分开很有用。 [1] 如果范围内的每个迭代器[first, last)指向未初始化的内存,则uninitialized_fill在该范围内创建x的副本。也就是说,对于范围内的每个迭代器i,[first, last),
uninitialized_copy在指向x的位置创建i的副本,方法是调用construct(&*i, x).
定义
定义在标准头文件 memory 中,以及非标准向后兼容头文件 algo.h 中。类型要求
-
ForwardIterator是 Forward Iterator 的模型。
-
ForwardIterator是可变的。
-
ForwardIterator的值类型具有一个构造函数,该构造函数接受类型为T.
的单个参数
-
[first, last)前提条件
- 是有效的范围。[first, last)中的每个迭代器ForwardIterator都指向一个足够大的未初始化内存区域,以存储
的值类型。
复杂度线性。正好last - first个构造函数调用。
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(A, A + N, val);
}
示例
[1] 特别是,这种低级内存管理用于某些容器类的实现。
另请参阅
分配器, construct, destroy,
uninitialized_copy, uninitialized_fill_n,
raw_storage_iterator
版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。
商标信息