これらの2つの関数は私のcppファイルの一部です。ベクトルタイプはクラスタイプ(WordInText)です。
私のプログラムがこれらのループに入ると、1つのループ内でプログラムから抜け出します。
私はあなたが欲しいと思う:
iter != wordintext_vec.end()
それよりも:
iter < wordintext_vec.end()
ループ条件を間違った方法で実行しています。「未満」ではなく「等しくない」と比較してください。返されたイテレータは、比較するとポインタのように機能し、未定義の動作を引き起こします(つまり、ループは終了に達する前にいつでも終了する可能性があります)。
この問題を解決するには、「等しくない」と比較してください。
for(vector<WordInText>::const_iterator iter = wordintext_vec.begin(); iter != wordintext_vec.end(); ++iter) {
// ...
}
このメソッドを最初に入力するときは、ベクトルに要素が含まれているかどうかを確認してください。
(擬似コード)のようなことができるはずです:
if(wordintext_vec.length == 0)またはif(wordintext_vec.isnull())
{{
ERROR_LOGIC( "ベクターは空です");
}