C++ 有一个指向std::vector元素的指针是一个好主意吗?这个元素现在还不存在,但稍后将被构造?

C++ 有一个指向std::vector元素的指针是一个好主意吗?这个元素现在还不存在,但稍后将被构造?,c++,pointers,vector,C++,Pointers,Vector,在这种情况下,对象需要在同一容器中存储指向相同类型的其他对象的指针。我将把这些对象保存在std::vector中。构造在某种程度上涉及(默认构造是不可能的),知道其他对象将保存在哪里是非常好的,但是没有必要访问它们。因此,在构建元素之前,我还要创建一个指向元素的指针向量 过程与此类似(我的类比int更复杂): std::vector v; v、 储备(10); std::向量ptr_v; 对于(int i(0);i,因为C++11可以使用: 所以我想说,如果您不重新分配数据,只要您在内存中构造

在这种情况下,对象需要在同一容器中存储指向相同类型的其他对象的指针。我将把这些对象保存在
std::vector
中。构造在某种程度上涉及(默认构造是不可能的),知道其他对象将保存在哪里是非常好的,但是没有必要访问它们。因此,在构建元素之前,我还要创建一个指向元素的指针向量

过程与此类似(我的类比int更复杂):

std::vector v;
v、 储备(10);
std::向量ptr_v;

对于(int i(0);i,因为C++11可以使用:

所以我想说,如果您不重新分配数据,只要您在内存中构造类之前不尝试使用它,就没有什么错。

一些实现将进行边界检查,至少在调试模式下是这样。由于形式上未定义行为,这是一种可能的结果。
std::vector<int> v;
v.reserve(10);
std::vector<*int> ptr_v;
for(int i(0); i<10; ++i)
   ptr_v.emplace_back(&v[i]) //[] will not do boundary checks
//now fill v and also use ptr_v