問題タブ [qvector]
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++ - QList と QVector の再検討
私の質問は基本的に、Qt コンテナーとしていつ選択するかQVector
、いつ選択するかです。QList
私がすでに知っていること:
- Qt ドキュメント: QList クラス
ほとんどの場合、QList が適切なクラスです。そのインデックスベースの API は、QLinkedList の反復子ベースの API よりも便利であり、アイテムをメモリに格納する方法により、通常は QVector よりも高速です。また、実行可能ファイル内のコードが少なくなります。
この非常に人気のある Q&A: QVector vs QListにも同じことが書かれています。また、QList を優先します。
しかし、最近の Qt World Summit 2015 で KDAB は「なぜ QList が有害なのか」を発表しましたが、基本的には次のとおりです。
QList を使用しないで、Q_DECLARE_TYPEINFO を使用してください
私が理解している限りでは、QList
新しい要素をヒープに割り当てるとき、ほとんどすべての型が非効率的であるという考えを理解しています。新しい要素を追加するたびに、new
(要素ごとに 1 回) が呼び出されますが、これは に比べて非効率的QVector
です。
これが、私が理解しようとしている理由です:QVector
デフォルトのコンテナーとして選択する必要があるのはどれですか?
qt - QMap の一部を QVector として取得する
-要素にいくつかの要素がありQMap<double, double> a
ます。ここで、 のいくつかの値のベクトルを取得したいと考えていますa
。最も簡単なアプローチは(私にとって)次のとおりです。
コピーする要素の停止位置および開始位置として および を指定しますx1
。x0
しかし、この for ループを使用する代わりに、より高速な方法はありますか?
編集:「より速い」とは、入力が速いことと(指摘されているように不可能です)実行が速いことの両方を意味します。指摘されているvalues(i)
ように、期待どおりに動作しないため、better_working の代替品が見つかるまで疑似コードとしてここに残します。
qt - 複雑な qvector のメソッドにアクセスできない
次のようなデータ構造があります。
書くwow->at(0).keys();
とうまくいきますが、書くwow[0].keys();
と次のようなエラーが表示されます。
'class QVector, QVector > >' には 'keys' という名前のメンバーがありません wow[0].keys(); ^
読み取り専用アクセスだけでなく、必要なメソッドを使用する必要がありますが、なぜこれが起こるのか理解できません。助けてください。Qhashe のメソッドに読み取り専用以外の方法でアクセスするにはどうすればよいですか?
qt - インプレース配列の QtConcurrent map()
私はフロートの大きな配列を持っています。私はそれを呼び出しQtConcurrent::map()
て、適切な値を変更したいと思います。
配列のコピーを作成せずにそれを行うことはできますか? map()
as パラメータを取るようで、コピーを作成せずに配列からQVector
a を初期化する手段が見つかりません。QVector
c++ - Qtで2D整数配列(GUI)を宣言して使用する方法は?
QT GUI APPLICATION のヘッダー ファイルに 2 列とまだ定義されていない (したがって動的な) 行数を持つ 2D 整数配列を作成したいと考えていました。
これまでのところ、私はこれを持っています:動的配列を作成する
2D 配列として使用できますか? そして、後で特定の列の特定の行を呼び出すにはどうすればよいでしょうか? 例えばArrayName[40][2]
?
c++ - ファイルから読み取ったデータは、ファイル サイズよりも多くのメモリを消費します
次の方法でいくつかのデータをファイルに書き込みました。
ファイルは最終的に 484MB になりました。その後、私はループでそれを読みました:
この読み取りループの実行中に、タスク マネージャーでプログラムが約 1300MB のメモリを消費し始め、その後、「In file text\qharfbuzzng.cpp, line 626: Out of memory」というエラーが表示されます。私の質問は次のとおりです。プログラムが 2 倍以上のサイズのファイル メモリを使用し始め、それをチャンクで読み取る必要があるのは正常ですか、それとも何か間違っていますか?
c++ - クラス スコープ内の 2 次元ベクトル
文字列を含む2次元ベクトルが必要なので、次のようなことを試しました:
これは私がここで見つけた初期化です
クラススコープでベクトルを初期化することは不可能であり、コンストラクターで行う必要があることも読みましたが、クラススコープでvarのプロトタイプを定義することはできません。
私も試しました
私の質問は次のとおりです。クラススコープでベクトルを定義し、コンストラクターで初期化する方法は?
c++ - C++ の配列の QVector
に多項式係数を保持しようとしていQVector
ます。私の多項式は 2 次なので、3 つの数値があります。
定義するQVector<double[3]> zeros_Real(n + 1)
と、エラーが発生します(以下)。最初は使えると思っていたのQVector<QVector<double>>
ですが、速度とメモリの問題になるので、やらないことにしました。
QVector
ofdouble[3]
要素を使用できないのはなぜですか?
エラー: