SGI

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 中。

类型要求

的单个参数的构造函数。

的值类型的值。

复杂度前提条件线性。正好

个构造函数调用。

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
[Silicon Surf] [STL Home]
raw_storage_iterator Copyright © 1999 Silicon Graphics, Inc. 保留所有权利。