我需要初始化一个vector<unique<TNode>>
with nullptr
是。该方法在this https://stackoverflow.com/questions/8468774/can-i-list-initialize-a-vector-of-move-only-type帖子太复杂了。我的情况很特殊,因为我只需要将其初始化为nullptr
。我怎样才能实现它?
我知道我可以使用 for 循环push_back
a 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;
}
std::vector<std::unique_ptr<int>> v (10);
它将创建一个 10 的向量unique_ptr
对象,所有这些对象都是默认初始化的(不制作任何副本)。默认初始化为unique_ptr
没有指向任何内容。
请注意,这与此完全不同:
std::vector<std::unique_ptr<int>> v (10, nullptr);
它尝试用 10 个 a 的副本来初始化向量unique_ptr
被初始化为nullptr
,这是无法完成的,因为unique_ptr
无法复制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)