問題タブ [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.

0 投票する
2 に答える
15716 参照

c++ - QMap::contains() VS QMap::find()

次のようなコードをよく見かけます。

理論的には、QMap で 2 つのルックアップを実行します。

私の最初の反応は、次のように置き換える必要があるということです。これは、1 回のルックアップのみを実行し、2 倍速くなるはずです。

QMap がこの最適化を自動的に行ってくれるのでしょうか? 言い換えれば、QMap が見つかった最後の要素の位置を保存しQMap::contains()、次の検索を実行する前に最初にチェックするかどうか疑問に思っていますか?

0 投票する
3 に答える
151 参照

c++ - スコープの最後で C++ 変数が削除されない

次のコード スニペット (基本的に、特定のフォルダーを再帰的に検出します) がありますが、C++ でのメモリ管理についてはわかりません。

私が覚えているように、new なしで作成された変数はスコープの最後で破棄されるため、entryInfoListにあるものはすべて、この関数の最後で破棄されます。アイテムをfileSysEntries QMapに保存したいので、これはうまくいかないと思いましたが、この呼び出しの後に削除されます。ただし、何らかの理由で後でアクセスできます。これは、 fileSysEntriesマップに挿入するときにchildのコピー コンストラクターが呼び出されるためだと思いましたが、insert 関数には次のシグネチャがあります。

ここで、は名前パラメーターによる呼び出しであるため、アイテムはコピーされません。これは私を少し混乱させます。誰かが私が見逃しているものを見せてもらえますか?

0 投票する
1 に答える
1312 参照

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が何らかの形で削除されることだと思います。なぜクラッシュするのか、またはデバッグをどのように進めればよいのでしょうか?

ありがとう

0 投票する
3 に答える
1415 参照

c++ - キーではなく値で QMap 要素にアクセスする

値で QMap にアクセスしたいのですが、それを反復処理して同じ値の要素を見つけてそのキーを使用したくありません。コンテンツで QMap キーを見つける方法はありますか? 私のコードは:

キーの値で m_all_data の要素にアクセスしたいiterator;