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)
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不能被复制.