如何使用空指针初始化unique_ptr的向量?

use*_*057 4 c++ stl unique-ptr c++14

我需要vector<unique<TNode>>nullptrs 初始化a .这篇文章中的方法太复杂了.我的情况很特殊,因为我只需将其初始化为nullptr.我怎样才能实现它?

我知道我可以使用一个for循环到push_back一个nullptr各一次.有优雅的方式吗?

BTW,make_unqiue对我的编译器不起作用.

#include <iostream>
#include <memory>
#include <vector>

using namespace std;

struct TNode {
    //char ch;
    bool isWord;
    vector<unique_ptr<TNode> > children;
    TNode(): isWord(false), children(26,nullptr) {}
};

int main()
{
    TNode rt;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Adv*_*ere 9

std::vector<std::unique_ptr<int>> v (10);
Run Code Online (Sandbox Code Playgroud)

它将创建一个包含10个unique_ptr对象的向量,所有对象都默认初始化(不进行任何复制).unique_ptr点的默认初始化为空.

请注意,这与此完全不同:

std::vector<std::unique_ptr<int>> v (10, nullptr);
Run Code Online (Sandbox Code Playgroud)

它试图初始化的10个人副本的矢量unique_ptr被初始化为nullptr,不能因为做unique_ptr不能被复制.