オブジェクトのベクトルを宣言したいとします。私はこのようにすることができます -ベクターにオブジェクトを効率よく正しく挿入する方法
vector<mynode> nodes;
しかし、mynodeのサイズが大きい場合、これは悪いです。だから私は、このようにそれをやって考える -
vector<mynode*> nodes;
しかし、上記の宣言は、私はアドレスを格納しています明らかに問題があり、それがすべてで安全ではありません。私はfoorループ内のオブジェクトを追加した場合たとえば、 - ポインタの内容は、実際にOKであれば、私が保証することはできませんよう
vector<mynode*> nodes;
for (int i=0; i<10; i++)
{
mynode mn;
nodes.push_back(&mn);
}
これは、エラーが発生します。これはokです
vector<mynode&> nodes;
for (int i=0; i<10; i++)
{
mynode mn;
nodes.push_back(mn);
}
-
だから、私はこの宣言を使用することを決定しますか?安全?これは、最初の行自体をコンパイルします。オブジェクトをベクターに格納する効率的な方法を提案してください。どうもありがとう。
いいえ、参照による格納は、ポインタによる格納とまったく同じです。挿入が頻繁でプログラムの速度が遅い場合は、別のデータ構造体( 'deque'?)または' std :: vector> 'を使用することを検討してください。また、あなたの質問名は質問自体と一致しません。 –
プロファイリングが実際の問題であることが示されていない限り、ベクトルの最適化について心配する必要はありません。最初のフォーム 'ベクトル'が最善です。 –
@ MooingDuckでは、参照を再割当てできないため、参照を格納することはできません。 –