raw_storage_iterator<ForwardIterator, T>
描述
在 C++ 中,运算符new为对象分配内存,然后通过调用构造函数在该位置创建对象。但是,有时将这两个操作分开很有用。 [1] 如果i是一个指向未初始化内存区域的迭代器,那么可以使用construct在由i. Raw_storage_iterator指向的位置创建对象。raw_storage_iterator是一个适配器,它使此过程更加方便。如果r是一个iraw_storage_iterator,那么它具有一些底层迭代器。表达式*r = x.
等效于
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));
transform(A1, A1 + N,
raw_storage_iterator<Int*, int>(A2),
negate<int>());
}
示例定义
在标准头文件 memory 和非标准向后兼容头文件 iterator.h 中定义。 |
描述 |
模板参数 |
参数 |
默认值rOutputIterator |
|
迭代器的底层迭代器的类型。
|
T |
|
将用作构造函数参数的类型。
模型
Output Iterator
的 value_type 具有一个构造函数,该构造函数接受类型为
公有基类无。
返回迭代器的类别。这是一个全局函数,而不是成员函数。
新成员r.
这些成员未在 Output Iterator 要求中定义,而是特定于 |
描述 |
函数
|
raw_storage_iterator(ForwardIterator i)r创建一个i.
|
其底层迭代器为
|
raw_storage_iterator& operator=(const T& val)类型要求在迭代器指向的位置构造一个的 value_type 对象,使用val |
作为构造函数的参数。
注释
[1] 特别是,这种低级内存管理用于某些容器类的实现。r[2] 请注意如何通过实现赋值。通常,一元operator*必须定义为返回一个代理对象,其中代理对象定义operator=r以执行插入操作。在本例中,为简单起见,代理对象是本身。也就是说,*ii返回, 并且。表达式*i = ti = t
。但是,您不应该依赖此行为。这是一个实现细节,并且不保证在将来的版本中保持不变。
另请参阅, construct, 分配器, destroy
uninitialized_copy, uninitialized_fill,
uninitialized_fill_n
版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。