問題タブ [stdlist]
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.
gcc - list insert は c++11 に対して void を返します。なぜですか?
最初に少し背景を説明します:
テキスト文法ファイルを解析する必要があるプログラミングの課題のために書いています。この場合、a のプレースホルダー文字列をstd::list<string>
対応する展開に置き換える必要があります (文字列は文を表します)。
リストを繰り返し処理し、一致する文字列を次のように消去します。
itr はイテレータで、ls は my ですstd::list<string>
次に、次のような展開を挿入します
other は展開を格納するコンテナです。
私の問題は、前の行が明らかに機能しないことです。これはおそらく有効な c++11 構文であり、イテレータが挿入したばかりの先頭を指すようにしたいと思います。insert
しかし、明らかに返されるように、コンパイルエラーが発生しますvoid
。
cplusplus.com で確認しましたが、私が見る限り、使用方法に問題はありません。標準(または少なくとも私が見ることができるもの)は次のように述べています:
フラグを指定して g++ (4.8.1) を使用してコンパイルして-std=c++11
いますが、stl_list.h を見ると次のように表示され(gcc-directory)/include/c++/4.8.1/bits
ます。
これは、gcc が c++11 ライブラリを完全に実装していないためですか? 彼らはこのビットを見落としましたか?実行するのは難しいとは思われず、それを囲む他のすべての挿入関数は反復子を返します。
あまり手間をかけずにこれを回避できることはわかっていますが、それでも何が起こっているのかを知っておくとよいでしょう。
ありがとう!
明らかにこれは私の質問に答えます。お手数をおかけして申し訳ありませんが、以前は見つけられなかったのが残念です。
c++ - C++ でリストのベクトルを出力する
リストのベクトルを出力するのに問題があります:
いっぱいになるように持っています:
しかし、それをどのように出力するのですか?私はさまざまなアプローチを試しましたが、それらの多くでエラーが発生しています。
演算子をオーバーロードする必要がありますか? どうすればそれができるようになるのか、完全にはわかりません。
c++ - std::list 要素をスキップする std::vector へのコピー
Objective-C アプリケーションで C++ コードを実行しているときに、奇妙な例外に遭遇しました。libxml2 を使用して XSD ファイルを読み取っています。次に、関連するタグを Tag クラスのインスタンスとして std::list に格納します。次に、リストの反復子を使用して、このリストを std::vector にコピーします。ただし、リストの一部の要素がベクトルにコピーされないことがあります。どんな助けでも大歓迎です。
c++ - std::list を含む std::function
私が達成しようとしているのはstd::list
、が含まれていることstd::functions
です。関数をリストに追加し、リストをループして各関数を呼び出すことができるコールバック システムを実装しようとしています。
私がクラスAに持っているものは次のとおりです。
そしてBクラスへ
...
しかし、GameControllerHub::invokeForward
私はエラーが発生します
「type 'std::list >::iterator' (別名 '__list_iterator') は呼び出し演算子を提供しません」
Xcodeでコンパイルしています
c++ - 演算子のオーバーロード != 一致エラーなし
関数では、リストの値がリストの終わりであるかどうかを確認しています。
この行で、neighbors はベクトルの隣接リストを返します。
returnEdge は、そのリストにある Edge を返します。
エラーは、ここにコピーしたコードの最初の行で発生し、次のとおりです。
ファイルでの私の演算子のオーバーロードは次のとおりです。
演算子のオーバーロードが間違っているか、returnEdge と neighbors().end() が同じ型の変数を返さないと思います。どうすれば修正できますか?
c++ - C++ std::list::iterator イテレータがアクセスできるかどうかメンバー関数?
SO に投稿するのはこれが初めてですが、ここでしばらくの間、回答とヘルプを利用してきました。
数年前から計画を立てたり止めたりしてきた単純なカード ゲームに取り組んでいます。最終的には、学校のシニア プロジェクトになる予定です (誰にも宿題を頼まないでください!)。
いくつかのクラスを介してリストの内容をコンソールにピントしようとすると、現在問題が発生しています。
ラインかどうかを調べようとしています
有効かどうかです。仕事からトラブルシューティングを行っていますが、現在何も試すことができません。今朝プロジェクトを中止しなければならない前に、いくつかのコンパイル エラーが発生したため、<< 演算子をオーバーロードする必要があると思い込んでいたのですが、それを試みたところ、何らかの理由でいくつかのリンク エラーが発生しました。
私は一日のほとんどを調査してきましたが、正しい解決策として私に飛びついた状況に遭遇していませんが、この小さなブロックは、私がしようとしていることに対して最も正しいと思われるものです行う。
そのブロックは、ハンド リストに保存されているカード オブジェクトの名前をそのまま出力しますか? はい、Card クラスには GetName() 関数があり、正しく宣言されています。
c++ - リスト反復子とベクトル反復子
イテレータに関して 2 つの質問があります。
ベクターやリストなどのSTLコンテナーにイテレーターを定義すると、コンテナーに要素を追加すると、これらのイテレーターはそれらにアクセスできなくなると思いました。ただし、次のコードは 5 つの要素のリストを定義し、各ループ反復で別の要素を追加するため、無限ループになります。
ただし、ベクトルに対して同じことを行うと、エラーが発生します。
/li>ベクトル コンテナーのサイズを変更する必要がある場合、2 のべき乗でサイズ変更を行い、新しいメモリ領域に配置されると考えました。イテレータは新しいメモリ位置に渡されません)。たとえば、push_back 関数を呼び出した後、16 要素を含むベクターは、32 要素のスペースが割り当てられ、ベクター全体が再配置されると考えました。ただし、これは次のコードでは発生しませんでした。私はちょうど間違っていましたか?
/li>