-1

重複の可能性:
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

4

2 に答える 2

0

std::vectorは動的にサイズ変更されることを考慮してください。初期値はあくまでも初期値ですが、2000個の要素を格納すると、それに合わせて大きくなります(再配置のため効率は悪くなりますが)。

于 2012-04-28T23:02:00.363 に答える
0

デフォルトのものを使用して、Node のコピー コンストラクターと代入演算子を間違えました。ベクターは再割り当て時にその内部のデータをコピーし、そのコピー操作により、同じ cfrag メンバーを持つ複数のノードが生成されます。

于 2012-04-29T04:04:40.843 に答える