問題タブ [stl]
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++ - hash_mapを使用するときにstl文字列で使用するのに最適なハッシュアルゴリズムは何ですか?
VS2005 の標準ハッシュ関数は、高パフォーマンスのルックアップを実現しようとすると非常に遅いことがわかりました。ほとんどの衝突を無効にする高速で効率的なハッシュ アルゴリズムの良い例は何ですか?
c++ - std::stack がデフォルトで std::deque を使用するのはなぜですか?
コンテナをスタックで使用するために必要な操作は次のとおりです。
- 戻る()
- push_back()
- pop_back()
デフォルトのコンテナーがベクトルではなく両端キューであるのはなぜですか?
push_front() が効率的な操作になるように、再割り当てを deque して front() の前に要素のバッファーを与えないでください。これらの要素は、スタックのコンテキストで使用されることはないため、無駄になっていませんか?
ベクトルの代わりにこの方法で両端キューを使用してもオーバーヘッドがない場合、priority_queue のデフォルトが両端キューではないのはなぜですか? (priority_queue には、front()、push_back()、および pop_back() が必要です - 基本的にスタックの場合と同じです)
以下の回答に基づいて更新されました。
deque が通常実装される方法は、固定サイズ配列の可変サイズ配列であるようです。これにより、ベクトル (再割り当てとコピーが必要) よりも高速に成長するため、要素の追加と削除がすべてのスタックのようなものでは、おそらく deque の方が適しています。
削除と挿入のたびに pop_heap() または push_heap() を実行する必要があるため、priority_queue には大量のインデックス作成が必要です。とにかく、要素の追加はまだ償却定数であるため、これはおそらくベクトルをより良い選択にします。
c++ - Visual Studio デバッグでの STL コンテナーの検査
std::vector
or変数がstd::map
あり、その内容を確認したい場合、デバッグ中に n 番目の要素を確認するのは非常に面倒です。プラグイン、またはデバッグ中に STL コンテナー変数を簡単に監視できるようにするためのトリックはあります(VS2003/2005/2008)
か?
c++ - なぜc++でc文字列を使用するのですか?
最近C++でC文字列を使用する正当な理由はありますか?私の教科書では、いくつかの点で例としてそれらを使用していますが、std::stringを使用するだけの方が簡単だと実感しています。
c++ - std::map からすべてのキー (または値) を取得してベクトルに入れる方法は?
これは私が出てくる可能な方法の1つです:
もちろん、別のファンクターRetrieveValuesを定義することで、マップからすべての値を取得することもできます。
これを簡単に達成する他の方法はありますか?(なぜ std::map にメンバー関数が含まれていないのか、いつも疑問に思っています。)
c++ - 標準コンテナで std::auto_ptr<> を使用するのが間違っているのはなぜですか?
std::auto_ptr<>
標準コンテナでの使用が間違っているのはなぜですか?
c++ - ベクトルを取得するベクトルを期待する関数に
これらのクラスを検討してください。
この機能
そして最後に私のベクトル
derived
functionに渡したいのですBaseFoo
が、コンパイラが許可しません。ベクトル全体を a にコピーせずに、これを解決するにはどうすればよいstd::vector<Base*>
ですか?
c++ - ポインターとコンテナー
RAW ポインターをスマート ポインターの形式でラップして、例外セーフ メモリ管理を実現する必要があることは誰もが知っています。しかし、ポインターのコンテナーになると、問題はさらに厄介になります。
std コンテナーは、含まれているオブジェクトがコピー可能であることを主張するため、これにより std::auto_ptr の使用が除外されますが、boost::shared_ptr などは引き続き使用できます。
ただし、ポインターを安全に保持するように明示的に設計されたブースト コンテナーもいくつかあります。ポインター コンテナー ライブラリ
を参照してください。
問題は、smart_pointers のコンテナーよりも ptr_containers を使用した方がよい条件は何ですか?
c++ - メモリフットプリントが最小の STL 実装は何ですか?
私は、STL を多用する非常に大規模なコンピューティング ライブラリに取り組んでいます。ライブラリは MSVC2003 を使用して構築されており、その STL 実装を使用しています。ライブラリのメモリ要件を下げ、パフォーマンスを向上させる代替の STL 実装を探しています。
現時点では、MSVC の新しいバージョンに切り替えることはできません。
可能であれば、ベンチマークに基づいていない実際の使用状況に関するフィードバックをお願いします。
EDIT:少し明確にするために、たとえば、一部のSTL実装(STLSoftなど)は、文字列連結の特定の最適化を提案しています。これらの影響は小さく聞こえるかもしれませんが、大きな改善につながる可能性があります。STLPort は、彼らが目標を明確に述べているもう 1 つの良い例です。最速の STL 実装がある、stdlib++ があるなど...これらはすべて良い候補になる可能性がありますが、すべてをテストする時間がありません。コミュニティの助けが必要です。その上で。
visual-studio-2008 - STLPort を VS2008 でビルドしたり、VS2005 で x64 ビルドを作成したりした人はいますか?
現在、VS2008 は 5.1.5 リリースでも STLPort CVS リポジトリでもサポートされていないようです。誰かがすでにこの作業を行っている場合は、可能であれば共有すると便利です:)
同様に、VS2005 または 2008 x64 ビルドに必要な変更について知っておくと役立ちます。