1

我有这个:

struct Node;
typedef boost::intrusive_ptr<Node> NodeSPtr;

...

boost::scoped_array<NodeSPtr> nodes(new NodeSPtr[size]);

...

// "pollute" operations ...

...

// reset all the items in the array
for (size_t i = 0; i < size; ++i)
    nodes[i].reset();

什么是初始化数组的最干净、更 STLish 的方法。请注意,代码对性能很敏感,不能选择使用向量。

4

1 回答 1

0

根据文档,默认构造函数intrusive_ptr有一个 get() == 0 的后置条件。因此,要默认构造数组值,只需在 之后粘贴一对花括号(统一初始化),如下所示:new

boost::scoped_array<NodeSPtr> nodes(new NodeSPtr[size]{});

如果不能使用统一初始化语法,也可以使用括号。

于 2013-12-25T20:22:52.587 回答