プログラム内のイテレータが以前の操作で無効になることがあるので、明示的に無効化したいと考えています。それを無効にするポインタにNULLを代入するなど、イテレータでも同じことをしたいだけです。 container.end()
はここでは正確な考えではありませんでした。私は自分のイテレータにNULLを割り当てようとしましたが、失敗しました。イテレータでNULLポインタの同じ動作をどうやって得ることができますか?イテレータを無効にする方法は?
2
A
答えて
1
これは常に動作しませんか? (イテレーターは常に割り当て可能で、デフォルトコンストラクターブルです)
template <typename Iter>
void foo(Iter it){
it = Iter(); // invalidate
}
2
なぜあなたはcontainer.end()
を使用したいドント...それはほとんどのコンテナのために働く...
yourstring.npos
で天気をチェックすることをお勧めしますのstd :: stringに
?。
4
は、あなたはそれが有効ではない可能性がわかっている場合は、あなたがそれをしなければならないすべてはそれを使用して停止...私は明示的に
を、それを無効にしたい、いくつかの前の操作によって無効にすることができ 。イテレータを無効にすると、明示的に何も処理が行われません。
+2
追加のブロックを使用してイテレータの範囲を制限しようとします。ブロックの外側では、イテレータはもう存在しません。それは無効よりも優れています。 –
1
一般的にはできません。無効にすることはできないイテレータがいくつかあります。たとえば、乱数ジェネレータを出力イテレータとしてモデル化すると、operator*
が現在の数値を返し、operator++
が新しいものを生成します。
関連する問題
- 1. イテレータの無効消去
- 2. 「無効なイテレータ範囲」::ベクトル
- 3. Java EEインターセプタを無効/無効にする方法は?
- 4. オートコンプリートのEnterキーを無効/無効にする方法は?
- 5. setOnItemClickListenerを無効にする方法は?
- 6. ビーカーキャッシュを無効にする方法は?
- 7. コンボボックスアイテムを無効にする方法は?
- 8. std :: list :: clearはstd :: list :: endイテレータを無効にしますか?
- 9. 無効方法は
- 10. jQuery jScrollPane:無効にする方法は?
- 11. GtkMenu項目の一部を無効/無効にする方法
- 12. コンポーネントを有効または無効にする方法は?
- 13. C#キーを無効にする方法
- 14. Android:FEATURE_NO_TITLEを無効にする方法
- 15. Sys.WebForms.PageRequestManagerParserErrorExceptionを無効にする方法
- 16. Thunderbirdショートカットを無効にする方法
- 17. イメージを無効にする方法
- 18. Microsoft.VisualStudio.TestTools.TestTypes.Unit.TestFailedExceptionを無効にする方法
- 19. WCF:WCFテストクライアントを無効にする方法
- 20. WPF DropShadowEffectを無効にする方法
- 21. DrawerLayout Shadowを無効にする方法
- 22. テキストラップを無効にする方法チェックボックス
- 23. TextViewを無効にする方法
- 24. ボタンを無効にする方法JS
- 25. Liferay - monitoringfilterを無効にする方法
- 26. doxygenマークアップを無効にする方法
- 27. jwplayerタイムスライダーを無効にする方法
- 28. パノラマデフォルトアニメーションを無効にする方法
- 29. QT - プッシュボタンを無効にする方法
- 30. ボタンを無効にする方法asp.net
まず、このような振る舞いにはお勧めできません。次に、イテレータへのポインタを格納できます。 – W55tKQbuRu28Q4xv
あなたが本当に誰かに未定義の振る舞いを明白に与える方法を説明してもらいたいなら、 – kriss
なぜこれを望みますか?後でイテレータで行うことができないことは、あなたが前に行うことはできません。 – MSalters