std::map容器的键值能为Point类吗?
时间: 2023-07-27 21:23:49 浏览: 83
可以,只要你定义了Point类的比较运算符函数,以便std::map容器可以根据键值进行比较和排序。例如,你可以定义一个名为operator<的函数,以实现Point类的小于比较运算符,然后在定义std::map容器时,指定Point类为键类型,如下所示:
```cpp
class Point
{
public:
int x;
int y;
bool operator<(const Point& other) const
{
return (x < other.x) || (x == other.x && y < other.y);
}
};
std::map<Point, int> myMap;
```
在这种情况下,std::map容器将使用Point类的operator<函数进行键的比较和排序。在使用时,你可以像使用其他类型的键一样使用Point类的对象,例如:
```cpp
Point p1{1, 2};
Point p2{3, 4};
myMap[p1] = 10;
myMap[p2] = 20;
```
这将在std::map容器中插入两个键值对,即{p1, 10}和{p2, 20},并且你可以使用p1和p2作为键来访问它们的值。
阅读全文