問題タブ [qmap]
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++ - QMap::contains() VS QMap::find()
次のようなコードをよく見かけます。
理論的には、QMap で 2 つのルックアップを実行します。
私の最初の反応は、次のように置き換える必要があるということです。これは、1 回のルックアップのみを実行し、2 倍速くなるはずです。
QMap がこの最適化を自動的に行ってくれるのでしょうか? 言い換えれば、QMap が見つかった最後の要素の位置を保存しQMap::contains()
、次の検索を実行する前に最初にチェックするかどうか疑問に思っていますか?
c++ - スコープの最後で C++ 変数が削除されない
次のコード スニペット (基本的に、特定のフォルダーを再帰的に検出します) がありますが、C++ でのメモリ管理についてはわかりません。
私が覚えているように、new なしで作成された変数はスコープの最後で破棄されるため、entryInfoListにあるものはすべて、この関数の最後で破棄されます。子アイテムをfileSysEntries QMapに保存したいので、これはうまくいかないと思いましたが、この呼び出しの後に削除されます。ただし、何らかの理由で後でアクセスできます。これは、 fileSysEntriesマップに挿入するときにchildのコピー コンストラクターが呼び出されるためだと思いましたが、insert 関数には次のシグネチャがあります。
ここで、値は名前パラメーターによる呼び出しであるため、子アイテムはコピーされません。これは私を少し混乱させます。誰かが私が見逃しているものを見せてもらえますか?
qt - findNode関数でcontains()を呼び出すと、QMapがクラッシュするのはなぜですか?
QMap を使用してデータを保存するマルチスレッド プログラムがありますが、contains() 関数が呼び出されると、まったく同じ行で時々クラッシュします。
myMap.contains(a)
-> キーと値はポインターではありません。
クラッシュ:
#0 findNode (akey=<synthetic pointer>, this=0x120eec4c) at /var/build/workspace/stage/nto/usr/include/qt4/QtCore/qmap.h:486
#1 contains (akey=<synthetic pointer>, this=0x120eec4c) at /var/build/workspace/stage/nto/usr/include/qt4/QtCore/qmap.h:555
クラッシュしている行は、単に次の行です。
for (int i = d->topLevel; i >= 0; i--)
クラッシュを引き起こす可能性がある唯一のことは、ポインターd
が何らかの形で削除されることだと思います。なぜクラッシュするのか、またはデバッグをどのように進めればよいのでしょうか?
ありがとう
c++ - キーではなく値で QMap 要素にアクセスする
値で QMap にアクセスしたいのですが、それを反復処理して同じ値の要素を見つけてそのキーを使用したくありません。コンテンツで QMap キーを見つける方法はありますか? 私のコードは:
キーの値で m_all_data の要素にアクセスしたいiterator
;