2012-07-24 66 views
2

我有指针到机器的载体: 即,C++:访问使用指针向量元素到它的开始

vector<Machines*> m; 

我填充指针载体和我知道机器的数量那存在。 如果我创建了一个指针到机器的一个指向矢量的开始:

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

将我是访问向量成员我递增该“0”?

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

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

预先感谢您!

+0

是的,它是允许的。 – timrau 2012-07-24 00:41:42

+1

你为什么要这样做? – 2012-07-24 00:48:08

+0

这当然是合法的,但是当你有一个向量时,看起来有点奇怪 - 侧面的问题:为什么一个指针向量?为什么不只是机器的矢量? – John3136 2012-07-24 00:49:18

回答

2

这是允许的,但你意识到你可以做到以下几点,没有理由使用Machines** m2;

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

哦,是的,我知道,我只是想知道上述是否会工作。我不以任何方式编码。非常感谢您的回答! :) – 2012-07-24 04:47:55

1

由于vector保证分配连续内存,这似乎是正确的。但你为什么?您直接在vector中拥有所有这些功能。

2

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

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