c ++:使用指向它开头的指针访问向量元素

时间:2012-07-24 00:39:43

标签: c++ pointers stl vector std

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

vector<Machines*> m;

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

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

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

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

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

提前谢谢!

3 个答案:

答案 0 :(得分:2)

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

vector<Machines*> m;
// Fill vector here
m[0]->dostuff(); // I assumed dostuff was a function
m[1]->dostuff();

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

中拥有所有这些功能