問題タブ [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.
c++ - リストC++内を検索しますか?
事前に私の質問を見てくれてありがとう。
私は次のことを尋ねる大学の課題の質問を完了しています:
std :: list <>、std :: map <>、std :: unordered_map <>のそれぞれについて、要素の挿入とルックアップの保証されたパフォーマンスを文書化して説明します。
リスト内の要素検索について説明するまで、私はこれのほとんどを行うのに問題はありませんでした。
Josuttisとhttp://www.cplusplus.comから情報を収集していますが、これに関する情報が見つからないようです。
できないから推測しますか?
c++ - 可変個引数関数宣言VSリストを取る関数
クラスまたは関数を設計するとき、以下に示すように、どちらの方法が優れているのでしょうか。また、その理由は何ですか。
addItemVariadic(..)やaddItemList(..)のような関数を提供する方が良いですか?
または、イテレータをさらに取得するなど、そのような関数のセットを提供する方がよいのでしょうか、それとも、リストを取得するなど、機能を制限する方がよいのでしょうか。
c++ - ライブラリ内の変数をリストすると実行時エラーが発生します。なぜですか?
わかりました。変数定義を移動することでエラーを修正しましたが、なぜ問題があるのか わかりません。
簡略化された背景: オブジェクトがあり、そのオブジェクトのすべてのインスタンスをリストで追跡したいので、単純にクラスの List<> 静的メンバーを作成しました。以下は、私がそれで遊ぶことを可能にした簡単な表現です。静的ライブラリで「この行」としてマークされた行があるとします。実行時エラーが発生します。オブジェクトはヘッダー ファイルで定義され、両方の場所で同じヘッダー ファイルです。「この行」を最終的なアプリケーションのコードに移動すると、それが機能します....なぜですか? なぜ違うのかさっぱりわかりません。
c++ - サポートされているタイプを既存のレガシーstd::list操作関数(つまりテンプレート?)に追加する方法
サポートされているタイプを既存のレガシーstd::list操作関数に追加することについて具体的な質問があります。テンプレートを使ってこれを試みましたが成功しなかったので、テンプレートをより適切に使用する方法や、まったく異なるメカニズムを使用する方法についてアドバイスをいただければ幸いです。以下の私のシナリオを見て、これについて何か考えがあれば教えてください。助けてくれてありがとう!
私は現在、タイプAの2つのstd :: listを持っており、それらの挿入/削除/ゲッター/etc関数を持っています。このための簡略化されたコードスニペットを以下に示します。
ここで、タイプBを追加する必要があることがわかり、テンプレートを使用してこの新しいタイプを追加することを検討しました(以下を参照)が、これには2つの問題があることがわかりました。
問題1:「std :: list&List」は参照によるものであるため、実際のリストに割り当てる必要があるため、使用できません。だから私はこのようなものになってしまいますが、これは理想的ではありません。
問題2:AからB、またはBからAのいずれかで型変換エラーが発生します。これは、テンプレートTが与えられると、コンパイラが「ListA.push_back」と「ListB.push_back」の4つの可能性すべてを列挙するためだと思います。これにより、AをリストAに挿入し、BをリストAに挿入し、AをリストBに挿入し、BをリストBに挿入しますが、これらのうち2つだけが有効です。だから私はこのようなものになってしまい、テンプレートを使用する目的を損なうと思います。
c++ - std::list::clear は std::list::end イテレータを無効にしますか?
このコードを確認してください:
現在、cplusplus.comによると、これは問題にはならないはずです。リリース モードでは、これで問題はなく、実際には問題は発生しないと思いますが、続行せずに保釈されるため、デバッグが不可能になります。ポインタはありますか?
c++ - リストの_first_要素を削除すると`.rend()`が無効になるのはなぜですか?
XCode4.6を使用してMacOSXでテストされています。
このサンプルコードは、std::list
期待どおりに作品の最後の要素を削除することを示しています。へのイテレータ参照list::end()
は「最後から1つ」であり、最後の要素を削除しても有効です。
しかし、2番目の例は私の直感に反しています。リストの最初の要素を削除すると、「最初から1つ過ぎた」と思った変更が変更されます。list::rend()
私の期待は間違っていましたか?なぜそれが間違っていたのですか?最後の要素を削除して「最後から1つ」への参照が有効なままであるのに(そうではないのですか?)、.rend()
前の要素を削除すると「先頭()の前の1」への参照が無効になるのはなぜですか?
c++ - リストを含む c++ マップ
キーが int で、値が配列のリスト ( ) であるマップを作成したいと思いますint[][]
。
私はこれを試しました:
しかし、コンパイルされず、理由がわかりません...(RとCはプログラムのパラメーターですが、実行中に変更されません)。
c++ - std::list の最初の N 個の要素を取得しますか?
std::list の最初の N 個の要素、または N >= リスト サイズ (および N = 0 も処理する) の場合のリスト全体である新しいリストを取得するための正しく安全な方法は何ですか?
アップデート
実際、必ずしも新しいリストが必要なわけではなく、後続のコードでリストのサブセットを操作したいだけです。これを行うには、新しいリストを作成するのが妥当な方法だと思います (リストのサイズは通常 50 未満であることに注意してください)。