如何用unordered_set存放坐标这种数据
时间: 2024-12-29 08:35:45 浏览: 25
如果你想在`unordered_set`中存储坐标类型的数据,例如`(int, int)`或者`(double, double)`,你需要做两件事:
1. **定义键的结构**:首先,需要定义一个包含坐标信息的结构体或者类。例如:
```cpp
struct Coordinate {
int x;
int y; // 或者 double x, double y,取决于实际需求
};
```
2. **自定义哈希函数和等价运算符**:因为`unordered_set`依赖于哈希函数来快速查找元素,所以需要为`Coordinate`类提供这两个成员函数。你可以利用内联函数模板来简化这个过程:
```cpp
#include <functional>
struct HashCoord {
std::size_t operator()(const Coordinate& coord) const {
return std::hash<std::tuple<int, int>>{}(std::make_tuple(coord.x, coord.y));
}
};
struct EqCoord {
bool operator()(const Coordinate& a, const Coordinate& b) const {
return a.x == b.x && a.y == b.y; // 或者使用其他条件判断
}
};
```
然后,在`unordered_set`的声明里,指定你的键类型以及刚刚定义的哈希函数和等价运算符:
```cpp
unordered_set<Coordinate, HashCoord, EqCoord> coordSet;
```
现在,你可以将`Coordinate`类型的对象插入`coordSet`,并利用哈希特性查询它们。
阅读全文
相关推荐


















