Qt 中的 O(1) 映射?

O(1) mapping in Qt?

如果我有一些名字,比如"jenny" "kevin" "miki" ...并且他们每个人都有一个相应的QWidget来显示他们的信息。是否可以从名称到 QWidget 进行 O(1) 映射?

又名,给定一个名称是否可以在恒定时间内获取其对应的QWidget?

(我正在做一个中央数据显示应用程序,每个人都会向我发送一个包含他的姓名和 gps 位置的包裹。我需要更新他相应的显示小部件。是否可以在 O(1 ) 时间?)

哈希表在最好的情况下确实有 O(1) 查找:http://en.wikipedia.org/wiki/Hash_table

如果你想在 Qt 中使用它,你可以试试 QHash。 http://doc-snapshot.qt-project.org/qt5-5.4/qhash.html

插入一个值很容易:

hash["jenny"] = myWidget;

并查找:

QWidget myWidget = hash["jenny"];

您可以在此处查看 Qt 容器的算法复杂度:http://doc-snapshot.qt-project.org/qt5-5.4/containers.html#algorithmic-complexity