Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;-std::映射没有';不需要浇铸_C++_Map_Std - Fatal编程技术网

C++ C++;-std::映射没有';不需要浇铸

C++ C++;-std::映射没有';不需要浇铸,c++,map,std,C++,Map,Std,我使用std::map来存储某些对象。地图具有模板。现在,我注意到贴图将坐标强制转换为整数,然后基于此为元素指定一个唯一键。(等于该整数) 现在,问题是不可能将三维整数(x,y,z)转换为std::map可以使用的单个整数 std::map有哪些替代方案要求键对象是唯一的,但不要求将其强制转换为整数(或字符串等)?您可以使用坐标作为贴图的键。您只需要为它定义一个值(类似于小于或大于比较)。如何做到这一点取决于您,但您可以使用3个坐标进行词典比较: #include <tuple> /

我使用std::map来存储某些对象。地图具有模板
。现在,我注意到贴图将坐标强制转换为整数,然后基于此为元素指定一个唯一键。(等于该整数)

现在,问题是不可能将三维整数(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;