我有指針到機器的載體: 即,C++:訪問使用指針向量元素到它的開始
vector<Machines*> m;
我填充指針載體和我知道機器的數量那存在。 如果我創建了一個指針到機器的一個指向矢量的開始:
Machines** m2;
m2 = & m[0];
將我是訪問向量成員我遞增該「0」?
m2[0]->dostuff;
m2[1]->dostuff;
...
這似乎對我可行,但我不確定是否允許。 :)
預先感謝您!
我有指針到機器的載體: 即,C++:訪問使用指針向量元素到它的開始
vector<Machines*> m;
我填充指針載體和我知道機器的數量那存在。 如果我創建了一個指針到機器的一個指向矢量的開始:
Machines** m2;
m2 = & m[0];
將我是訪問向量成員我遞增該「0」?
m2[0]->dostuff;
m2[1]->dostuff;
...
這似乎對我可行,但我不確定是否允許。 :)
預先感謝您!
這是允許的,但你意識到你可以做到以下幾點,沒有理由使用Machines** m2;
?
vector<Machines*> m;
// Fill vector here
m[0]->dostuff(); // I assumed dostuff was a function
m[1]->dostuff();
哦,是的,我知道,我只是想知道上述是否會工作。我不以任何方式編碼。非常感謝您的回答! :) – 2012-07-24 04:47:55
由於vector
保證分配連續內存,這似乎是正確的。但你爲什麼?您直接在vector
中擁有所有這些功能。
如果發生向量內存的重新分配,代碼中的指針將無效。
將元素推送到矢量時可能會發生這種情況。
是的,它是允許的。 – timrau 2012-07-24 00:41:42
你爲什麼要這樣做? – 2012-07-24 00:48:08
這當然是合法的,但是當你有一個向量時,看起來有點奇怪 - 側面的問題:爲什麼一個指針向量?爲什麼不只是機器的矢量? – John3136 2012-07-24 00:49:18