【发布时间】:2011-08-21 01:44:30
【问题描述】:
我目前有一个类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
和
//Foo pointers in vector<Foo *>
*a
*c
*d
*d
为什么vector<Foo *> 中指向c 的指针在b 在vector<Foo> 中被删除后不会一直指向c?有什么办法可以补救吗?
(我知道如果我删除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 *>
}
【问题讨论】:
-
请提供填充数组的代码,这是必不可少的部分。
-
让我戴上我的通灵帽。