問題タブ [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++ - テンプレートクラス値のC++std :: map
テンプレート化されたを指す値を持つプライベートを持つことで、Row
とColumn
クラスを宣言しようとしています。このようなもの:Row
std::map
Column
まあ、原則として、クラスは使用したい種類(または)をRow
知る必要はないと思います。つまり、1列目か2列目かはわかりません。しかし、正しい構文が何であるかはわかりません。宣言のために、またはこの意味で制限されていて、私が何か他のものを使用する必要がある場合。Field
Column
Field<int>
Field<double>
Row::column
std::map
よろしくお願いします。よろしくお願いします。
c++ - std :: map :: clear()が呼び出された後もメモリにアクセスできるのはなぜですか?
std :: map :: clear()の奇妙な振る舞いを観察しています。このメソッドは、呼び出されたときに要素のデストラクタを呼び出すことになっていますが、clear()を呼び出した後もメモリにアクセスできます。
例えば:
a
問題は、そのデストラクタがmap :: clear()によって呼び出された後でも、なぜ変数にアクセスできるのかということです。delete a;
呼び出し後に書き込む必要がありますか、それともmy_map.clear()
内容を上書きしても安全a
ですか?
よろしくお願いします、sneg
c++ - std::map::const_iterator を使用してテンプレート化されたクラスにネストされた構造体?
次のコードは、反復子が宣言されている行で構文エラーを生成します。
これは、A がテンプレート化されたクラスである場合にのみ発生します。このコードの何が問題になっていますか? A から B を移動すると、コードは正常にコンパイルされます。
c++ - C++ const std::map 参照がコンパイルに失敗する
std::map
as constへの参照を渡すと [] 演算子が壊れる理由はありますか? const を使用すると、次のコンパイラ エラー (gcc 4.2) が発生します。
エラー: 'map[name]' の 'operator[]' に一致しません</p>
関数のプロトタイプは次のとおりです。
const
また、の前のキーワードを削除しても問題ありませんstd::map
。
私が正しく指示されていれば、キーが見つからない場合、[] 演算子は実際に新しいペアをマップに挿入します。これはもちろん、これが起こる理由を説明しますが、これが実際に起こるとは想像できません。許容される動作。
[] の代わりにfindを使用するなど、より良い方法があれば、それをいただければ幸いです。ただし、find が機能しないようです... const不一致の反復子エラーが発生します。
c++ - std::map イテレータが MFC アプリで繰り返されない
レガシーMFCアプリケーションでこのように宣言された std::map があります。
m_NutrientInfoMap は、テーブルをループして CNutrientInfo のインスタンスを作成し、次のように std:map に挿入することによって、アプリが読み込まれるときに設定されます。
std::map には、データベースによって定義された栄養素のリストが含まれるようになりました。ある時点で、ユーザーがこのリストに新しい栄養素を追加すると、ユーザーが追加しようとしているものが既にリストに存在するかどうかがチェックされます。それは次のようにチェックします:
または、少なくともそうするはずです。関数が実際に呼び出されると、while ループの最初の行を超えて進むことはありません。そこにブレークポイントを配置すると、問題の行が何度も呼び出され、それを超えて進まないことが示され、アプリがハングします。実際の比較にステップインすると、正しく比較され、while ループ行に戻ります。再びステップインしてループの本体に進むと、単純に while ループの行に戻ります。これと同じロジックがアプリの他の場所でも問題なく使用されているため、この場合何が起こっているのかわかりません。for ループを使用して上記のロジックを書き直したところ、問題なく動作するので、回避できないわけではありませんが、C++ は私の最強の言語ではありません。これはレガシー アプリであるため、サポートを手伝おうとしています、私は' 今後の参考のために、なぜこれが何をしているのかを学び、理解したいと思っています。さらに、ロジックはここではなく他の場所で機能するため、実際に対処する必要がある根本的な原因がある可能性があります。
これに関する提案や考えは大歓迎です。
前もって感謝します。
c++ - C++ std::map への挿入時の奇妙なバグ
いくつかの値のペアを std::map に挿入しようとしています。最初のケースでは、マップへのポインターを受け取り、それを逆参照し、添え字演算子を使用して値を割り当てます。すなわち
後でコレクションを反復処理しようとすると、最初の (map.begin()) アイテムを除くすべてのケースで、値属性に null を含むキーと値のペアが返されます。奇妙なことは、マップの挿入機能を介して挿入を行うと、すべてがうまくいくことです。
これはなぜでしょうか?2 つの方法は機能的に同等ではありませんか? コンテキストのために、実際のコードのスニペットを以下に貼り付けました
私はすべてのアイデアがありません。誰か提案がありますか?
c++ - C++ スレッドセーフ マップ
std::map
a をラップしてスレッドセーフにする実装をどこで見つけることができるか知っている人はいますか? スレッド セーフとは、一度に 1 つのスレッドで、マップへのシリアル アクセスのみを提供することを意味します。最適には、このマップは標準ライブラリおよび/またはブースト構造のみを使用する必要があります。
c++ - イテレータとreverse_iterator
私はstd::map
多くの要素(要素のペア)を格納するために使用していますが、「少し」疑問があります。私のstd::map
、iterator
またはですべての要素を反復するのに、より効率的なものは何reverse_iterator
ですか?
c++ - C ++でマップのキーとしてカスタムタイプを使用するにはどうすればよいですか?
のキーとしてカスタムタイプを割り当てようとしていますstd::map
。これが私がキーとして使用しているタイプです:
と一緒に使用するとstd::map
、次のエラーが発生します。
を以下のものに変更するstruct
と、すべてが機能します。
オペレーターがfriendとしてオーバーロードされていることを除いて、何も変更されていません。最初のコードが機能しないのはなぜですか?