C++ 如何为数据类型向量的std::minmax函数编写自定义比较器<;glm::vec3>;(opengl数据类型)
我发现以下编译器错误:C++ 如何为数据类型向量的std::minmax函数编写自定义比较器<;glm::vec3>;(opengl数据类型),c++,comparator,glm-math,minmax,C++,Comparator,Glm Math,Minmax,我发现以下编译器错误: C2664:Reason: cannot convert from 'const _Ty' to 'const glm::vec3' 我的自定义比较器: bool comp(glm::vec3 const & first, glm::vec3 const & sec) { return first.y > sec.y; } 还有我称之为的代码 // function getVertices() returns std::vector<
C2664:Reason: cannot convert from 'const _Ty' to 'const glm::vec3'
我的自定义比较器:
bool comp(glm::vec3 const & first, glm::vec3 const & sec) { return first.y > sec.y; }
还有我称之为的代码
// function getVertices() returns std::vector<glm::vec3>
const std::vector<glm::vec3> verts = mesh.getVertices();
auto minmax = std::minmax(std::begin(verts), std::end(verts),comp);
//函数getVertices()返回std::vector
const std::vector verts=mesh.getVertex();
自动最小值=标准:最小值(标准:开始(垂直),标准:结束(垂直),复合);
如何解决这个问题?请提供帮助。该函数返回两个(或更多)值的最小值和最大值
要使用一系列迭代器(例如容器的开头和结尾)获取最小和最大元素,您应该使用。正如“一些程序员”所建议的,我将其更改为std::minmax\u元素。成功了。:) 请将完整的错误输出复制粘贴到问题中。最好与a一起使用。这看起来应该会起作用。请提供一个补充说明,我怀疑您是否想经常复制网格的顶点。令人惊讶的是,我可以。此代码是openframeworks示例的一部分。完整的代码<代码>#包含“of main.h”#包含“of app.h”//==========bool comp(glm::vec3 const&first,glm::vec3 const&sec){return first.y>sec.y;}int main(){of mesh mesh mesh;mesh.load(“lofi bunny.ply”);const std::vector verts=mesh.getverts();auto minmax=std::minmax(std::begin(verts),std::end(verts),comp)}实际上,有一个
initializer\u list
版本需要2个以上的值。但是(a)这不是一个initialiser列表,即使它是,(b)那么你也会复制你的数据。仍然不需要。我将其更改为std::minmax\u元素。保持其他事物不变。成功了。谢谢。