繁体   English   中英

初始化指向矢量的指针的矢量

[英]Initializing a vector of pointers to vector

我有一个指向向量的向量:

std::vector<std::shared_ptr<std::vector<int>>> vec;

我想将第一个指针初始化为一个空向量的指针。 我尝试了这个:

vec.push_back(nullptr);

然后我想push_back一些值给nullptr指向的向量。 我这样做:

vec[0]->push_back(x);

我知道这是错误的,最终导致段错误。 我尝试使用make_shared()而不是nullptr进行操作,但是我仍然不知道如何实现我提到的内容。 有人可以帮我解决这个问题吗?

如果您想让vec包含一个指向向量的有效共享指针,则只需

vec.emplace_back(std::make_shared<std::vector<int>>());

现在那里有一个指针,它指向有效的对象。 使后续的下标和取消引用本身有效。

只要确定您不要第二次 如果先插入nullptr ,然后再插入有效的指针,则将是vec[1]指向对象,而不是vec[0] 您最初的尝试是在向量的开头放置一个空的共享指针。 如果您在其后插入更多元素,它将无处可寻。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM