[英]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.