【发布时间】:2010-08-17 09:44:20
【问题描述】:
我尝试在 STL 容器中使用 GLM 矢量类。只要我不尝试使用<algorithm>,没什么大不了的。大多数算法都依赖于 == 运算符,而 GLM 类并未实现该运算符。
有人知道解决此问题的简单方法吗?无需(重新)实现 STL 算法:(
GLM 是一个很棒的数学库,在 c++ 中实现了 GLSL 函数
更新
我刚刚发现 glm 实际上在扩展中实现了比较运算符 (here)。但是我如何在 stl 中使用它们呢?
更新 2
这个问题已经被这个问题取代了:how to use glm's operator== in stl algorithms?
【问题讨论】:
-
我不确定哪个答案更像是一个黑客......
-
它们都不是黑客。它们都是非常好的和惯用的解决方案。请记住,运算符有效地扩展了类型:如果您定义
operator==,所有客户端都会假定它是 测试相等性的方法。如果它仅用于 STL 算法,那么仿函数可能是更好的选择。这对于相等可能没问题(尽管您有时可能想要使用变量 epsilon),但对于operator<来说这可能是个坏主意,因为没有明显的方法来定义一个向量是否“小于”另一个,所以当那个需要,我会使用仿函数。
标签: c++ opengl stl glsl glm-math