SGI

uninitialized_copy_n

类别:分配器,算法 组件类型:函数

原型

template <class InputIterator, class Size, class ForwardIterator>
ForwardIterator uninitialized_copy_n(InputIterator first, Size count,
                                     ForwardIterator result);

说明

在 C++ 中,运算符new为对象分配内存,并通过调用构造函数在该位置创建一个对象。不过,有时将这两个操作分开很有用。[1]如果范围内的每个迭代器[result, result + n)都指向未初始化的内存,则uninitialized_copy_n创建[first, first + n)的副本在该范围内。也就是说,对于输入范围中的每个迭代器iuninitialized_copy_n创建*i通过调用construct(&*(result + (i - first)), *i).

在输出范围内对应迭代器所指向的位置

定义

定义在标准头文件 memory 中,以及非标准向后兼容性头文件 algo.h 中。此函数是 SGI 扩展;它不属于 C++ 标准的一部分。

的值类型。

的值。

复杂性线性。恰好n

次构造函数调用。

class Int {
public:
  Int(int x) : val(x) {}
  int get() { return val; }
private:
  int val;
};    

int main()
{
  int A1[] = {1, 2, 3, 4, 5, 6, 7};
  const int N = sizeof(A1) / sizeof(int);

  Int* A2 = (Int*) malloc(N * sizeof(Int));
  uninitialized_copy_n(A1, N, A2);
}

示例

注释

[2] [1]特别是,这种类型的低级内存管理用于某些容器类的实现中。Uninitialized_copy_n几乎,但还不完全是多余的。如果firstuninitialized_copy_n输入迭代器,而不是 正向迭代器,那么该操作不能根据.

uninitialized_copy

另请参见, 分配器, construct, 操作不能根据, destroy, uninitialized_fill, uninitialized_fill_n
[Silicon Surf] [STL Home]
raw_storage_iterator 版权所有 © 1999 Silicon Graphics, Inc.保留所有权利。