我目前有一个类的向量Foo
和另一个向量指针指向载体Foo
的一个子集。我目前有一个函数,用于从vector<Foo *>
中选择一些指针,并从实际包含它们的vector<Foo>
中删除它们。因此,在一开始,两个向量是这样的:指针实际上并不指向对象本身?
//Foo classes in vector<Foo>
a
b
c
d
和
//Foo pointers in vector<Foo *>
*a
*b
*c
*d
然而,我发现,删除Foo
后,说b
,他们是这样的:
//Foo classes in vector<Foo>
a
c
d
and
//Foo pointers in vector<Foo *>
*a
*c
*d
*d
如何在vector<Foo *>
中指向c
的指针不会指向c
之后b
在vector<Foo>
中被删除?有什么方法可以补救吗?
(我明白,如果我删除b
,原来指针b
将是一个晃来晃去,但是因为我没有打算访问其删除后b
无论如何,我认为这不会有问题,我可以去与指针c
)下一个索引
编辑:
按照要求,在指针向量被填充的代码:
for(int i = 0; i < a.size(); i++) //a is the vector<Foo>
{
Foo * thisFoo = &a[i];
if(someConditionMet)
b.push_back(thisFoo); //b is the vector<Foo *>
}
请提供填充阵列的代码,那是必要的部分。 –
让我戴上我的心灵帽。 –