問題タブ [const-iterator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - unordered_set のイテレータが読み取り専用なのはなぜですか?
上記の例で、どうすれば車の燃料を変えることができますか? を使用vector
しても、この問題は発生しません。
c++ - std::set イテレータの戻り値の型の競合
これは、今日私を混乱させた 2 番目のコンパイラ エラーです。どういうわけか、以下のコードの場合、gcc は、コードにreturn_iter
競合する型を返すイテレータを返す関数がありstd::_Rb_tree_iterator<const int*>
、次にを返す関数があると文句を言いstd::_Rb_tree_const_iterator<const int*>
ますが、セットが const ではないため、両方とも const イテレータであってはなりません。std::end()
const 以外の左辺値で呼び出されたときにメソッドが を返す理由を誰か説明できますconst_iterator
か?
完全なコードを以下に貼り付けます。
でコンパイルした場合にのみ、このエラーが発生することに注意gcc
してください。これを clang ( でコンパイルすると、このエラーは表示されませんApple LLVM version 8.0.0 (clang-800.0.38)
。私が使用している gcc のバージョンはg++ (GCC) 5.1.0
関連する質問です。これは forward の正しい使い方ですか? std::forward
転送参照を使用したいときはいつでも電話しても大丈夫ですか? 以下で呼び出す理由は、オブジェクトが右辺値の場合に型がいくつかのメソッドをオーバーロードする場合に備えて..
このLessPtr
エラーを引き起こすには、どういうわけか必要です..
c++ - iterator と const_iterators の実装
ネストされた iterator クラスと const_iterator クラスが内部にある二重リンク リスト クラスに関するコンパイルで問題が発生しています。
私はテンプレート構文を使用するのが初めてで、少し悪夢のようになっています。現在、各関数でエラーが発生し、最後にリンカー エラーが発生しているようです。これにより、ヘッダーに問題があるか、ヘッダーが含まれているか、関数のシグネチャに関係があるように感じます。
私のヘッダーのサンプルは次のとおりです。
対応する実装は次のとおりです。
ただし、コンパイルしようとすると、次のような 42 個のエラーが表示されます。
「RecentList::const_iterator::operator++(int) const」、次から参照:
最後にリンカーエラーがあります。
また、テンプレートが存在する理由は、リスト クラスがテンプレートを使用するためです。その構文を含めないと、Xcode はそれを好まない。
問題を修正するにはどこを見ればよいですか?
c++ - アドレス イテレータ アイテム
Vertice(頂点クラス)が設定されているので、 が参照するアイテムのアドレスにs
入りたい。言い換えると、Vertice *address
set<Vertice>::iterator it
でも、返品
何か案が?
c++ - 並列実行時に反復子ペアを取る関数が機能しない
GameName (std::string) と、GameTime (size_t) のコレクションに対するイテレータの begin/end ペアを取る、次のテンプレート化された関数があります。範囲を反復処理し、GameTime-s を合計して、ゲーム名、合計ゲーム時間、平均ゲーム時間 (GameStats) のタプルを返します。
(デバッグの目的で、最初と最後に反復した要素もリストします。それらは毎回同じである必要がありますが、以下を参照してください。)
std::vector への参照を取得するこの関数の同様のバージョンは正常に機能しましたが、この新しい関数は、複数のインスタンスが並行して実行されると、反復子を台無しにしているようです。各ゲームのプロセスを開始するコードは次のとおりです。
(GameEntries は、GameName を GameTime のベクトルにマッピングする std::map タイプです)
プログラムの実行からの出力の関連部分は次のとおりです。
プログラムを複数回実行すると、一部のゲームの正しい結果から、どこでも完全に誤った数値まで、さまざまな結果が得られます。また、プログラムが完了した後、各ゲームのすべての GameTime エントリをリストして、プログラムが変更されていないことを確認します。
ただし、出力からわかるように、同じ関数内で (おそらく定数で変更されていない) 最初から最後まで反復すると、毎回異なる結果が得られます。これは、タスクが並行して実行される場合にのみ当てはまります。(次のフューチャーを起動する前に各フューチャーで wait() を呼び出すことにより) 順次実行すると、プログラムは正しく実行されるため、各スレッドが何らかの理由で他のイテレーターを無効にしていることが推測されます。 、すべて値渡しされました。
この干渉の原因と、それらを並行して動作させる方法を知りたいです。
c++ - 構造体のベクトル内の要素の変更
構造体のベクトル内の一連の要素を反復処理しており、構造体の 1 つの要素を変更したいと考えています。値を変更するために要素に書き込むと、更新が保持されません。ここに私が持っているものがあります:
まず、ヘッダーファイルで:
その後、.cpp モジュールで...
ベクター内の指定された構造の event.member の値が false のままではありません。このループに戻ると、条件ステートメントが再度実行されます。
イテレータの typedef と何か関係があるのでしょうか?