【发布时间】:2019-06-17 18:55:16
【问题描述】:
我的代码中有以下结构,它分配 x 和 y 随机生成的整数值:
struct A{
int x,y;
A () : x(random_gen_num),y(random_gen_num) {};
};
我有一个对象向量,需要一个指向每个对象的指针向量:
vector<A> a(5);
a.reserve(5);
vector<const A*> apoint(5);
apoint.reserve(5);
for(const A thisA : a){
apoint.push_back(&thisA);
}
当我尝试使用以下方式打印它们时:
for(unsigned int i = 0; i<5; i++){
cout<< i <<"\t"<< a[i].x <<"\t" << &a[i]<<"\t" << apoint[i] <<endl;
}
我将所有的 apoint 都设为 NULL 指针,如下所示:
0 8 0x29b1bd0 0
1 8 0x29b1bd8 0
2 1 0x29b1be0 0
3 8 0x29b1be8 0
4 6 0x29b1bf0 0
当我在 for 循环中说 apoint[i] = &a[i] 时,代码对我来说似乎是合乎逻辑的,但实际上这是无效的,因为 apoint 和 a 的索引可能不一样。据我所知,我找不到类似问题的已回答问题。有没有更好的方法将指针插入向量?
【问题讨论】:
-
您要解决的实际问题是什么?为什么你认为你需要一个指向另一个向量中对象的指针向量?
-
是的,不清楚为什么需要
apoint。当您想要a中的元素地址时,只需使用&a[i],尽管我怀疑您甚至需要它 -
是的,需要一个指针向量,因为在实际程序中,我希望将其用于另一个函数进行评估。但是,谢谢。我没有考虑thisA的范围。
-
apoint包含十个指针——五个空指针后跟五个悬空指针。