2

マシンへのポインタのベクトルがあります:つまり、

vector<Machines*> m;

ベクトルにポインターを入力すると、存在するマシンの数がわかります。ベクトルの先頭へのMachinesのポインターへのポインターを作成した場合:

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

その「0」をインクリメントするときに、ベクトルメンバーにアクセスしますか?

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

それは私には実行可能のようですが、それが許可されているかどうかはわかりません。:)

前もって感謝します!

4

3 に答える 3

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 に答える
2

ベクトルメモリの再割り当てが発生した場合、コード内のポインタは無効になります。

要素をベクターにプッシュするときに発生する可能性があります。

于 2012-07-24T01:05:38.867 に答える
1

vector連続メモリを割り当てることが保証されているので、これは正しいようです。しかし、なぜあなたはそうしますか?このすべての機能は、に直接ありvectorます。

于 2012-07-24T00:49:10.250 に答える