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

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

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

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

【问题讨论】:

    标签: c++ qt qmap qmultimap


    【解决方案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,任何阅读定义的人都会知道数据对于同一个键会有多个值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多