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 :用于插入使用 insert QMultiMap :用于插入使用替换

您可以看到两者都可以达到两个目的。但是,每个都有与其名称相匹配的独特默认行为。此外,每个都有一些便于单/多的方法或运算符。

最好根据需要选择类型。这是一个很好的做法。例如,如果您使用 QMap 来存储单键多个值,其他一些正在查看您的类成员的人可能会觉得您愿意保存单键值对(从数据类型)类似地,如果您使用 QMultiMap ,任何阅读定义的人都可以理解数据对于同一个键将具有多个值。

于 2011-01-07T11:23:16.597 回答