を変更する場合は、次のコードスニペットは、の実行時にエラーメッセージを表示します。ベクトルイテレータないdereferenceableイテレータcomparisson
デバッグアサーションに失敗しました:
for(it=stat1vec.begin(); *(it)>=investigated_stat; it++, positioner++)
{
if(*it==investigated_stat)
equalwith++;
}
ベクトルのイテレータdereferenceableないように変更した場合:
for(it=stat1vec.begin(); *(it)==investigated_stat; it++, positioner++)
{
if(*it==investigated_stat)
equalwith++;
}
コードは完全に機能します。
すべての行われているが、なぜこれが
です==する=>変更することがありますか?
どうもありがとうございました
'='、私はあなたが 'を使用することを意図割り当てと思うされ==:シーケンス(アルゴリズムを使用していないとき、つまり)を反復処理するための慣用的な方法は、次のようになりますことを
注意'、そう?さらに、一時オブジェクトの構築を避けるためには、イテレータで 'it ++'より '++ it'を使う方が良いでしょう。 – hochl
@hochlオプティマイザは、ほとんどの場合、演算子に関係なく一時的に除外されます。 –
習慣に入るのは良いことです。 –