2

我有一个指向机器的指针向量:也就是说,

vector<Machines*> m;

我用指针填充向量,我知道存在的机器数量。如果我创建了一个指向 Machines 指向向量开头的指针:

Machines** m2;
m2 = & m[0];

当我增加'0'时,我会访问向量成员吗?

m2[0]->dostuff;
m2[1]->dostuff;
...

这对我来说似乎可行,但我不确定这是否允许。:)

先感谢您!

4

3 回答 3

2

如果发生向量内存的重新分配,代码中的指针将无效。

将元素推送到向量时可能会发生这种情况。

于 2012-07-24T01:05:38.867 回答
2

这是允许的,但您是否意识到您可以执行以下操作并且没有理由使用Machines** m2;

vector<Machines*> m;
// Fill vector here
m[0]->dostuff(); // I assumed dostuff was a function
m[1]->dostuff();
于 2012-07-24T01:00:16.957 回答
1

由于vector保证分配连续的内存,这似乎是正确的。但你为什么要?您可以直接在vector.

于 2012-07-24T00:49:10.250 回答