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

docsintrusive_ptrによると、デフォルトのコンストラクタには get() == 0 という事後条件があります。したがって、配列値をデフォルトで構築するには、次のように の後に中かっこ (一様な初期化) のペアを貼り付けます。new

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

統一された初期化構文を使用できない場合は、括弧を使用することもできます。

于 2013-12-25T20:22:52.587 に答える