2012-07-24 67 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

如果發生向量內存的重新分配,代碼中的指針將無效。

將元素推送到矢量時可能會發生這種情況。