問題タブ [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++ - オブジェクトの汎用キャッシュ
テンプレート化されたオブジェクトのキャッシュの実装を知っている人はいますか?
- キーを使用してオブジェクトを検索します (std::map<> と同じ)。
- 同時にキャッシュに入れることができるオブジェクトの最大数を指定します
- キャッシュにないオブジェクトを作成する機能があります
- オブジェクトがキャッシュからいつ破棄されるかを知るための機能があります
例えば :
LRU または MRU キャッシュのように単純なものにすることができます。
どんな提案も大歓迎です!
ニック
c++ - C++の存在マップ
std :: mapのようなものが必要ですが、アイテムが存在するかどうかだけを確認したいので、実際にはキーと値は必要ありません。何を使うべきですか?
c++ - コンテナのtypedefショートカットのようなSTL?
STL コンテナーの一般的なパターンは次のとおりです。
したがって、テンプレート パラメーターの宣言を記述することを避けるために、次の場所でこれを行うことができます。
しかし、このマップが単一の関数または単一の反復でのみ使用される場合、これは厄介なオーバーヘッドです。
この typedef を回避する方法はありますか?
c++ - vector::iterator または list::iterator の代わりに「任意の種類の入力反復子」を返す
有向グラフを格納するためのデータ構造を C++ で実装したいとします。アークは、STL コンテナーのおかげでノードに格納されます。STL のような方法で、ユーザーがノードのアークを反復処理できるようにしたいと考えています。
私が抱えている問題は、具体的なクラスで実際に使用する STL コンテナーを Node クラス (実際には抽象基本クラスになる) で公開したくないということです。したがって、メソッドが std::list::iterator または std::vector::iterator を返すようにしたくありません...
私はこれを試しました:
しかし、vector::const_iterator を使用して ArcIterator を作成することはできないため、これは正しくありません。では、この ArcIterator は何でしょうか?
STL のカスタム イテレータに関するこの論文を見つけましたが、役に立ちませんでした。今日はちょっと重いかな…;)
c++ - 配列インデックスの代わりに反復子を使用する理由
次の 2 行のコードを見てください。
この:
2番目の方法が好ましいと言われています。これはなぜですか?
c++ - C++ 例外: std::string をスローしています
私の C++ メソッドが奇妙なことに遭遇し、回復できない場合に、例外をスローしたいと考えています。std::string
ポインタを投げても大丈夫ですか?
私が楽しみにしていたことは次のとおりです。
c++ - 手巻きループよりも STL アルゴリズムを好むべきでしょうか?
ここでの質問と回答では、for_each()、transform() などよりも多くの「for」ループが反復子に見られるようです。Scott Meyers は、stl アルゴリズムが推奨されていることを示唆しているか、少なくとも 2001 年にはそうしていました。もちろん、それらを使用することは、多くの場合、ループ本体を関数または関数オブジェクトに移動することを意味します。これは容認できない合併症だと感じる人もいれば、問題をよりうまく解決できると考える人もいます.
それで...手巻きループよりもSTLアルゴリズムを優先する必要がありますか?
c++ - std::map 反復 - デバッグ ビルドとリリース ビルドの順序の違い
これは、私が使用しなければならない一般的なコードパターンです。
ただし、(for ループ内で) マップが処理される順序は、ビルド構成がリリースかデバッグかによって異なる場合があることがわかりました。リリース ビルドで発生するコンパイラの最適化がこの順序に影響しているようです。
begin()
上記のループで使用し、各メソッド呼び出しの後に反復子をインクリメントすることで、初期化順にマップを処理すると考えました。ただし、マップはハッシュ テーブルとして実装され、順序が保証されないことも読んだことを覚えています。
ほとんどの単体テストはデバッグ ビルドで実行され、多くの場合、外部の QA チームがテストを開始するまで (リリース ビルドを使用しているため)、奇妙な順序依存関係のバグが検出されないため、これは特に厄介です。
誰かがこの奇妙な振る舞いを説明できますか?
c++ - 静的 std::map の初期化C++で
静的マップを初期化する正しい方法は何ですか? それを初期化する静的関数が必要ですか?
c++ - std::mapにすべての値を設定する
std::map
各値を反復処理するループを使用せずに、aのすべての値を同じ値に設定するにはどうすればよいですか?