我在 vector 中有QPoint变量,我想将其存储在 map 中。

std::map<QPoint, int> pointMap;
QPoint t;
int i;
pointMap.insert(std::pair<QPoint,int>(t, i));

如果我使用string,int映射,它工作正常。但是我不能在 map 上使用QPoint。有任何想法吗?

编译器消息:“没有匹配到对(std::pair)(QPoint&,int)的调用”

最佳答案

我认为问题在于std::map需要实现了operator <的类型,但是QPoint却没有。要解决此问题,您可以例如通过以下方式定义 map :

std::map<int, QPoint> pointMap;

否则,您需要为QPoint定义自定义“小于”运算符,例如:
bool operator <(QPoint point1, QPoint point2)
{
    // Do you logic here, to compare two points.
    return true;
}

10-06 01:03