C++ C++;-std::映射没有';不需要浇铸
我使用std::map来存储某些对象。地图具有模板C++ C++;-std::映射没有';不需要浇铸,c++,map,std,C++,Map,Std,我使用std::map来存储某些对象。地图具有模板。现在,我注意到贴图将坐标强制转换为整数,然后基于此为元素指定一个唯一键。(等于该整数) 现在,问题是不可能将三维整数(x,y,z)转换为std::map可以使用的单个整数 std::map有哪些替代方案要求键对象是唯一的,但不要求将其强制转换为整数(或字符串等)?您可以使用坐标作为贴图的键。您只需要为它定义一个值(类似于小于或大于比较)。如何做到这一点取决于您,但您可以使用3个坐标进行词典比较: #include <tuple> /
。现在,我注意到贴图将坐标强制转换为整数,然后基于此为元素指定一个唯一键。(等于该整数)
现在,问题是不可能将三维整数(x,y,z)转换为std::map可以使用的单个整数
std::map有哪些替代方案要求键对象是唯一的,但不要求将其强制转换为整数(或字符串等)?您可以使用坐标作为贴图的键。您只需要为它定义一个值(类似于小于或大于比较)。如何做到这一点取决于您,但您可以使用3个坐标进行词典比较:
#include <tuple> // for std::tie
struct Coordinate
{
double x, y, z;
....
bool operator<(const Coordinate& rhs) const
{
return std::tie(x, y, z) < std::tie(rhs.x, rhs.y, rhs.z);
}
};
然后
std::map m;
“我注意到地图将坐标转换为一个整数”——你把我弄丢了。我不知道你在说什么。您是否可以提供一些代码来帮助演示您的问题?要检查映射应按什么顺序放置值,它会执行key1struct Comp
{
bool operator()(const Coordinate& lhs, const Coordinate& rhs) const
{
return std::tie(lhs.x, lhs.y, lhs.z) < std::tie(rhs.x, rhs.y, rhs.z);
}
};
std::map<Coordinate, ValueType, Comp> m;