問題タブ [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.
c++ - std::map挿入またはstd::map検索?
既存のエントリを保持したいマップを想定しています。20% の確率で、挿入するエントリは新しいデータです。返されたイテレータを使用して std::map::find を実行してから std::map::insert を実行する利点はありますか? それとも、挿入を試みてから、反復子がレコードが挿入されたかどうかを示しているかどうかに基づいて処理するほうが速いですか?
insert - std::map の場合、コンテナーのサイズを変更する必要があり、メモリが利用できない場合、挿入はどのように動作しますか?
std::map の場合、コンテナーのサイズを変更する必要があり、メモリが利用できない場合、挿入はどのように動作しますか?
c++ - std::map からすべてのキー (または値) を取得してベクトルに入れる方法は?
これは私が出てくる可能な方法の1つです:
もちろん、別のファンクターRetrieveValuesを定義することで、マップからすべての値を取得することもできます。
これを簡単に達成する他の方法はありますか?(なぜ std::map にメンバー関数が含まれていないのか、いつも疑問に思っています。)
c++ - C++ std::map 代替コンテナーを推奨できる人はいますか?
マップは物事を簡単に行うのに最適ですが、メモリを大量に消費し、キャッシュの問題に悩まされます。また、マップがクリティカル ループに陥っている場合は、問題が発生する可能性があります。
したがって、同じ API を持ち、ツリー実装の代わりにベクトルまたはハッシュ実装を使用する別のコンテナを誰かが推奨できるかどうか疑問に思っていました。ここでの私の目標は、コンテナーを交換し、マップに依存するすべてのユーザー コードを書き直す必要がないようにすることです。
更新: パフォーマンスに関する最善の解決策は、std::vector でテストされたマップ ファサードです。
c++ - 静的 std::map の初期化C++で
静的マップを初期化する正しい方法は何ですか? それを初期化する静的関数が必要ですか?
c++ - boost::shared_ptr 標準コンテナ
クラス foo があり、std::map を使用して boost::shared_ptrs を保存したいとします。
新しい foo_sp をマップに追加したが、使用したキーが既に存在する場合、既存のエントリは削除されますか? 例えば:
元のポインター (p) は、p2 に置き換えられたときに解放されますか? そうなると確信していますが、質問/共有する価値があると思いました.
c++ - キー タイプ std::string を使用したマップ ルックアップのパフォーマンスを向上させるにはどうすればよいですか?
(VC++ 実装)を使用してstd::map
いますが、マップの find メソッドを介したルックアップが少し遅くなります。
キーの種類はstd::string
.
std::map
マップのカスタム キー比較オーバーライドを使用して、このルックアップのパフォーマンスを向上させることはできますか? たとえば、 < 比較は、データを比較する前にstd::string
単純な比較を考慮していないのでしょうか?string::size()
比較をスピードアップするための他のアイデアはありますか?
私の状況では、マップには常に 15 未満の要素が含まれますが、ノンストップでクエリが実行されており、パフォーマンスが重要です。たぶん、私が使用できるより高速なデータ構造がありますか?
更新: マップにはファイル パスが含まれています。
Update2: マップの要素は頻繁に変更されます。
c++ - std::mapの最後のキー
std :: mapの最高のキー値(比較演算子によって定義される)を探しています。
これは保証されていますか
?
(私は逆イテレータに少し不安があり、std :: mapの実装にはどれだけの自由がありますか)
そうでない場合は、アドバイスしてください。データ構造を変更できません。
c++ - STL マップでは、[] よりも map::insert を使用する方が良いですか?
少し前に、STLマップに値を挿入する方法について同僚と話し合いました。彼が好んだのに対し、私はmap[key] = value;
それが自然に感じられ、読みやすいので好んだmap.insert(std::make_pair(key, value))
.
私はちょうど彼に尋ねたところ、インサートが優れている理由を私たちのどちらも覚えていませんが、単にスタイルの好みではなく、効率などの技術的な理由があったと確信しています. SGI STL リファレンスには、「厳密に言えば、このメンバー関数は不要です。便宜上のみ存在します」と書かれています。
誰かその理由を教えてもらえますか、それとも私が夢見ているだけですか?
c++ - std::map に値が存在することを確認する - C++
findメソッドがstd::mapで提供されたキーを見つけ、要素にイテレータを返すことを知っています。とにかく値を見つけて、要素へのイテレータを取得する方法はありますか? 私がする必要があるのは、指定された値が std::map に存在することを確認することです。マップ内のすべてのアイテムをループして比較することでこれを行いました。しかし、これに対するより良いアプローチがあるかどうかを知りたかったのです。
ここに私が書いたものがあります
編集
値、キーの組み合わせを格納する別のマップを内部で使用するのはどうですか。だから私はそれでfindを呼び出すことができますか?std::map のfind()は順次検索を行っていますか?
ありがとう