【发布时间】:2014-07-15 19:40:24
【问题描述】:
我很难调试我的一小段代码:
std::map<glm::ivec3,int> myMap;
glm::ivec3 myVec(3, 3, 3);
myMap.find(myVec);
我收到以下错误:
c:\program files (x86)\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\stl_function.h|237|error: no match for 'operator<' in '__x < __y'
这是否意味着我无法检查 glm::ivec3 是否小于另一个?
我认为因为订购了stl::map,所以编译器想要检查哪一对先出现。我试图使键成为指针并且它起作用了。
有没有办法让键保持值而不是指针?这让我问另一个问题:如何将无法比较或比较慢的东西与大于操作进行比较?
谢谢! :)
【问题讨论】:
-
真的有
bool oprerator<(const glm::ivec3&,const glm::ivec3&)availabla吗?? -
不,如果我不想更改源,我不知道是否可以添加一个(我不是 C++ 专业人士)。
-
检查建议的重复和答案,这些应该有助于解决您的问题(无需更改旧源)。
-
我不同意这是引用链接的副本。在这种情况下没有自然排序,所以
map并不是一个很好的选择。
标签: c++ dictionary stl std glm-math