选择QMap / map的键是否有好的做法

时间:2014-08-19 14:53:31

标签: c++ qt map qmap

我只需要使用QMap<QTcpSocket*, QString>来保留每个连接的名称。

我被告知使用像QTcpSocket这样的复杂对象作为键是不理想的,因为地图比较键的方式,它可能认为有重复,而不是。

所以我显然最好使用QMap<QString, QTcpSocket*>

我无法找到&#34;良好做法&#34;有关它的信息。 这有什么理由吗?某些对象是否比其他对象更多/更少推荐用作密钥?

1 个答案:

答案 0 :(得分:3)

正如@vahancho所提到的,在这种情况下使用指向对象的指针不是问题。

但是,由于您希望保留每个连接的名称,请考虑QTcpSocket是QObject。

考虑到这一点,您可以调用函数 setObjectName(const QString&amp; name)来命名对象,并调用函数 objectName()来检索它,如在documentation for QObject中描述。