T.P*_*Poe 1 c++ vector shared-ptr
我有这个向量的指针向量:
std::vector<std::shared_ptr<std::vector<int>>> vec;
Run Code Online (Sandbox Code Playgroud)
我想初始化第一个指针作为指向空向量的指针.我试过这个:
vec.push_back(nullptr);
Run Code Online (Sandbox Code Playgroud)
然后我想将一些值push_back到nullptr指向的向量.我这样做了:
vec[0]->push_back(x);
Run Code Online (Sandbox Code Playgroud)
我知道这是错误的,它最终会出现在段错误中.我尝试用make_shared()而不是nullptr做一些事情,但我仍然无法弄清楚如何实现我提到的.谁能帮我解决这个例子?
如果要vec包含一个向量的有效共享指针,就像它一样简单
vec.emplace_back(std::make_shared<std::vector<int>>());
Run Code Online (Sandbox Code Playgroud)
现在有指针,它指向有效对象.使您的后续子脚本和取消引用有效.
请确保你不要做第二次.如果你插入nullptr第一个,然后是一个有效的指针,那么它将vec[1]指向一个对象,而不是vec[0].您的原始尝试在向量的开头放置一个空的共享指针.如果你在它之后插入更多的元素,它就不会去任何地方.
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |