問題タブ [stdmap]
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.
java - JavaでC++std :: mapに相当しますか?
私はC++std :: mapの通常の実装の特徴を備えたJavaクラスを探しています(私が理解しているように、自己平衡二分探索木):
- 挿入/削除/検索のO(log n)パフォーマンス
- 各要素は、一意のキーとマップされた値で構成されます
- キーは厳密な弱順序に従います
オープンソースまたは設計ドキュメントを使用した実装を探しています。私はおそらく、プリミティブキー/値の独自のサポートをロールバックすることになります。
この質問のスタイルは次のようになります。Javaでstd::dequeに相当し、その答えは「JavaのプリミティブコレクションからのArrayDeque」でした。
c++ - MoveConstructibles のマップを作成できません
を含むクラスがありstd::unique_ptr<>
、このクラスのインスタンスを 内に配置したいと考えていますstd::map<>
。C++ にムーブ セマンティクスを導入する動機の 1 つは、標準コンテナー内に物を配置できるunique_ptrs
ことだと思いました (ベクトルの場合、これは実際に機能します)。しかし、私にstd::map<>
はこの考えが気に入らないようです。これはなぜですか?
ありがとう。
- 編集
より明確にするために、正確なエラーメッセージは次のとおりです。
それは の問題のように見えますが、std::pair<>
単独で使用すると完全に正常に動作します:
それは明らかに悪用できないという意味ではありませんが:
これはおそらく の中で起こることですstd::map<>
。
手がかり?
- 編集
エラー メッセージを確認すると、実際には TDM-GCC 4.4.1 のstd::map<>
実装に問題があることがわかります。のような移動セマンティクスを意識した挿入メソッドを備えていないようですstd::vector<>::push_back(value_type&&)
。
今何をする?
c++ - Boost.Bind で std::for_each の std::map 要素にアクセスする
キーを持つ単純な構造体を格納するマップがあります。構造体には 2 つのメンバー関数があり、1 つは const で、もう 1 つはそうではありません。std::for_each を使用して const 関数を問題なく呼び出すことができましたが、非 const 関数の呼び出しに問題がありました。
const メンバー関数の呼び出しは正常に機能しますが、boost は内部的に const MyStruct を予期しているように見えるため、MSVC7.1 では次のコンパイル エラーで失敗します。
boost\bind\mem_fn_template.hpp(151): エラー C2440: '引数': 'const MyStruct *__w64 ' から 'MyStruct *const ' に変換できません
テンプレートパラメーターを正しく設定する方法について何か助けていただければ幸いです。バインドはパラメーターを正しく認識し、非 const 関数を呼び出すことができます。
ありがとう、カール
c++ - VS2010RC-デバッガーの100個のstd::map要素のみ
std :: mapコンテナのすべての要素を表示したい場合、VS2010RCでアプリをデバッグするときに小さな問題が発生します。
デバッガーがブレークポイントに到達し、要素インスペクターでマップの値を確認したい場合([ローカル]ウィンドウと、マウスで変数名をホバーした後のポップアップウィンドウでも)、リストを下にスクロールします。要素は100要素で停止し、次の要素はできません。マップには200を超える要素が含まれています(マップのcounterパラメーターはこれを正しく示しています)が、要素インスペクターでそれらすべてを表示することはできません。
std::map<int, int>
この問題は、200個のint値で満たされた最も単純な場合でも発生します。
これは設定の問題かもしれませんが、私はそれらの多くの組み合わせを試しましたが、それでも機能しません。多分誰かがこれを解決する方法についていくつかのアイデアを持っています。
よろしくお願いします。
c++ - std::map のデフォルト値
キーが存在しない場合のデフォルト値std::map
の戻り値を指定する方法はありますか?operator[]
c++ - std :: mapの削除(Visual C ++)
削除しようとしているマップへのポインタがあります(このマップにはnewが割り当てられています)。
このマップは有効だと思います。デバッグ中にカーソルを合わせると、次のように表示されpMap
ます[0]()
。
この空のマップを削除しようとすると、アプリが終了し、
myapp.exeの0xsomelocationでの初回例外:0xsomenumber:呼び出されたオブジェクトがクライアントから切断されました。
出力ウィンドウで。これは何を意味するのでしょうか?
ありがとう..
編集:ここにいくつかのサンプルコードがあります:
StructBにはオーバーロードされた演算子があります()
編集:StructBは確かに構造体です、申し訳ありませんが、演算子()は単なる文字列比較関数です。
私のコードのある部分では、クラスのコンストラクターがメソッドを呼び出します。それをInitClass()と呼びましょう。これにより、myMapポインターが次のように初期化されます。
後でこのクラスのデストラクタで、私は行きます
ありがとう
編集:動作していた古いバージョンのコードに戻しましたが、現在は正常に動作しています。
うまくいったのは次のようなものでした:
以前、私はそれをこれに変更しました:
奇妙な..コードに何か問題があるかもしれませんが、まだどこにあるのかわかりません..コード全体を投稿すると大きすぎる(そしておそらく解雇されるでしょう)ので、そのままにしておきましょうそれで..
問題の原因となったのは、クリアまたは削除しようとしたnullマップへのポインターであった可能性があります。
助けようとしたすべての人に感謝します...:)
c++ - ここでマップを使用して期待するようにコピーコンストラクターが呼び出されないのはなぜですか?
std::mapでカスタムクラスを使用する際に問題が発生します。クラスはメンバーに動的にメモリを割り当てます。クラスが割り当てられたすべてのメモリを確実に削除するようにしたいので、マップでポインタを使用したくありません。しかし、私が抱えている問題は、アイテムをマップに追加した後、そのコードブロックがスコープ外になると、オブジェクトがまだマップ上にあるにもかかわらず、オブジェクトデストラクタが呼び出されることです。以下に、私が何を意味するかを示す偽のコードを作成しました。出力は次のとおりです。問題は、なぜ最後のデストラクタが呼び出されるのかということです。事前に感謝し、長い質問をお詫び申し上げます。
c++ - C ++の長いswitchステートメントまたはマップで検索しますか?
私のC++アプリケーションには、他の値を表すコードとして機能する値がいくつかあります。コードを翻訳するために、私はswitchステートメントとstlマップのどちらを使用するかについて議論してきました。スイッチは次のようになります。
マップはとになり、stl::map<int, int>
変換はキー値として使用されるコードを使用した単純なルックアップになります。
どちらがより良い/より効率的/よりクリーン/受け入れられていますか?なんで?
java - C++ の std::map に相当する Java Map keySet() はありますか?
C++ に相当する Java Map keySet() はありstd::map
ますか?
JavakeySet()
メソッドは、「このマップに含まれるキーのセット ビュー」を返します。
c++ - ポインタからマップメンバーにアクセスできません
それが私の最初の質問です:)
プログラムの構成をGroup->Key->Value
古いINIのような形式で保存しています。情報を一対の構造に保存しています。
最初std::map
に、グループ情報(文字列キーのグループ名)にwith string+ptrを使用しています。2番目の値は、フィニッシュペアを持つsのstd::map
sencond構造体へのポインターです。std::list
std::map
Key->Value
キー->値のペア構造は動的に作成されるため、構成構造は次のようになります。
さて、私は内部構成のデータの存在をチェックするために2つのメソッドを実装しようとしています。1つ目は、構造内のグループの存在を確認します。
2番目の方法は、私を夢中にさせることです...グループ内のキーの存在をチェックします。
何が悪いのかわかりません。コンパイラは言う:
ただし、マップイテレータであるため、2番目のメンバーが必要です...
何が起こっているのかについて何か提案はありますか?
私の英語:Pについて申し訳ありませんが、これを演習として行っていると考えてください。クールな構成マネージャーがたくさんいることを知っています。