Adl*_*l A 4 c++ pointers stdvector visual-studio-2015
这可能是一个新问题(我),但我已尽可能多地搜索以找到解决以下问题的方法
我有以下场景(当然很重要):
class Container
{
std::vector<Object> obj;
};
class Pointers
{
std::vector<Object*> obj_ptr;
};
Run Code Online (Sandbox Code Playgroud)
我有一个例程,它将Object类型的元素推回到Container中的向量obj,然后将指向同一元素的指针推回到obj_ptr.
整个想法是obj_ptr [i] == &obj [i]在整个程序的整个生命周期.
我遇到的问题是,每当obj的容量需要增加所有指针都无效时,使obj_ptr完全无用.我使用最大预期大小(大约10 ^ 7)尝试了两个obj.reserve()并初始化具有相同大小的向量.问题仍然存在.
不确定它是否重要,但我正在使用VS 2015 Com.
谢谢!
常见的方法是使用智能指针像
class Container {
std::vector<std::unique_ptr<Object>> obj;
};
Run Code Online (Sandbox Code Playgroud)
要么
class Container {
std::vector<std::shared_ptr<Object>> obj;
};
Run Code Online (Sandbox Code Playgroud)
取决于您的用例(语义).