我有这个向量glm :: vec3元素
std::vector<glm::vec3> const& vertices
,我想遍历它们。我是这样尝试的。
for(std::vector<glm::vec3>::iterator it = vertices.begin(); it != vertices.end(); ++it) {
...
}
..但是编译器告诉我
no viable conversion from '__wrap_iter<const_pointer>' to '__wrap_iter<pointer>'
任何人都可以帮助我如何在此向量上正确进行迭代。谢谢:)
答案 0 :(得分:1)
此错误是因为您将std :: vector声明为常量:
std::vector<glm::vec3> const& vertices
然后,当您声明迭代器循环时,您使用了可变的迭代器(即,允许您写入迭代器指向的值的非常量迭代器)。这直接违反了您对向量的原始声明。您可以通过使用常量迭代器进行如下循环来解决此问题:
for(std::vector<glm::vec3>::const_iterator it = vertices.begin(); it != vertices.end(); ++it) {
...
}
或者,如果您确实需要更改访问权限(例如,您要写入数据),则可以声明向量的原始声明,而无需使用“ const”关键字,例如:
std::vector<glm::vec3>& vertices