SGI

uninitialized_copy

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

原型

template <class InputIterator, class ForwardIterator>
ForwardIterator uninitialized_copy(InputIterator first, InputIterator last,
                                   ForwardIterator result);

描述

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

定义

在标准头文件 memory 和非标准向后兼容头文件 algo.h 中定义。

类型要求

前提条件

复杂度

线性。正好last - first个构造函数调用。

示例

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(A1, A1 + N, A2);
}

注释

[1] 特别地,这种低级内存管理用于某些容器类的实现。

另请参见

分配器, construct, destroy, uninitialized_fill, uninitialized_fill_n, raw_storage_iterator
[Silicon Surf] [STL Home]
版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。 商标信息