2012-04-28 7 views
-1

可能性の重複:
Vector Initialisation in C++ベクトルC++エラー

私は自分のコード内のベクトルを使用しています。次のように

エラーの原因となっている行がある:

vector<Node> alt_seq ; 
for(int j=0; j<alt_cf.getNoOfNodes(i); j++) 
{ 
    Node temp_node = *alt_itr; 
    alt_itr++; 
    alt_seq.push_back(temp_node); 
} 

ライン:

alt_seq.push_back(temp_node); 

ランタイムエラーを引き起こします。しかし、次のようにいくつかの初期サイズのベクトルを初期化する場合:

ベクトルalt_seq(1000); この場合、コードは正常に動作します。しかし、私はベクトルのオブジェクトの数が実行時に変更されるので、最初のサイズを与えたくありません。私を助けてください。私はC++で新しいです。あなたの参考のために

は、完全なメソッドの機能はここにある:

http://pastebin.com/2dUFEui5

クラスノードの定義はここにある:

http://pastebin.com/zDbJikK7

+0

「alt_itr」とは何ですか? – juanchopanza

+0

alt_itrはノードオブジェクト –

+0

のベクトルに対するイテレータで、実行時エラーが発生する可能性がありますか? – vguzmanp

答えて

0

はstd ::を考慮してくださいベクトル動的サイズのです。初期値はちょうど初期値ですが、2000の要素を格納すると、それらの要素に合わせて拡張されます(再配置のために効率が低下します)。

+0

はい、現在のコードの問題は何ですか? –

0

ノードのcopy constructorと割り当て演算子をデフォルトのもので間違えました。 Vectorは再割り当て時にその内部にデータをコピーします。そのコピー操作では、同じcfragメンバーを持つ複数のノードが生成されています。