我在 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;
}