QMap::insertMulti 还是 QMultiMap?

Posted

技术标签:

【中文标题】QMap::insertMulti 还是 QMultiMap?【英文标题】:QMap::insertMulti or QMultiMap? 【发布时间】:2011-01-07 10:59:52 【问题描述】:

我应该在 QMap::insertMulti 和 QMultiMap 之间使用什么来处理:

2 -> abc 2 -> 定义 3 -> 吉 3 -> jkl

输入 2 个解决方案有什么区别?

【问题讨论】:

【参考方案1】:

阅读Container Classes:

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.

看起来两者都能胜任。在本文档中还有 Algorithmic Complexity 部分,您可以在其中看到两个类具有相同的复杂性。

我会选择 QMultiMap 只是为了更好地记录我将使用同一个键保存多个值的事实。

【讨论】:

【参考方案2】:

两者都可以达到这个目的。 QMultiMap 实际上是 QMap 的子类。

如果您愿意为单个键设置多个值,您可以使用: QMap:用于插入使用 insertMulti QMultiMap : 用于插入使用 insert

如果您愿意为单个键设置单个值,您可以使用: QMap :用于插入使用插入 QMultiMap : 用于插入使用替换

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

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

【讨论】:

以上是关于QMap::insertMulti 还是 QMultiMap?的主要内容,如果未能解决你的问题,请参考以下文章

da shu mo ban

(原)关于音频onset detection算法的阅读

论文笔记Reading Scene Text in Deep Convolutional Sequences

判断是mysql还是percona还是mariaDB

我还是喜欢你......

C#类命名约定:是基类还是基于类还是抽象类