6

QMap::insertMulti と QMultiMap の間で何を使用して処理する必要がありますか:

2 -> abc
2 -> def
3 -> ghi
3 -> jkl

2つのソリューションの違いは何ですか?

4

2 に答える 2

7

コンテナ クラスの読み取り:

QMap<Key, T>
This provides a dictionary (associative array) that maps keys of type Key to values of type T. Normally each key is associated with a single value. QMap stores its data in Key order; if order doesn't matter QHash is a faster alternative.

QMultiMap<Key, T>
This is a convenience subclass of QMap that provides a nice interface for multi-valued maps, i.e. maps where one key can be associated with multiple values.

どちらも仕事ができるようです。このドキュメントには、アルゴリズムの複雑さのセクションもあり、両方のクラスの複雑さが同じであることがわかります。

QMultiMap同じキーで複数の値を保持するという事実をより適切に文書化することを選択します。

于 2011-01-07T11:28:33.723 に答える
5

どちらもこの目的に役立ちます。QMultiMap は実際には QMap のサブクラスです。

単一のキーに対して複数の値を使用したい場合は、次を使用できます。 QMap : 挿入に insertMulti を使用 QMultiMap : 挿入に insert を使用

単一のキーに対して単一の値を使用したい場合は、次を使用できます。 QMap : 挿入に挿入を使用 QMultiMap : 挿入に置換を使用

どちらも両方の目的を果たすことができることがわかります。ただし、それぞれにその名前に一致する固有のデフォルト動作があります。また、それぞれにシングル/マルチに便利なメソッドまたは演算子がいくつかあります。

必要に応じてタイプを選択することをお勧めします。これは良い習慣です。たとえば、単一のキーと複数の値を格納するために QMap を使用する場合、クラス メンバーを調べている他の人は、(データ型から) 単一のキーと値のペアを保存しても構わないと思っているという印象を受ける可能性があります。 、定義を読んだ人は誰でも、データが同じキーに対して複数の値を持つという考えを得ることができます.

于 2011-01-07T11:23:16.597 に答える