我有一个循环,它遍历类的向量。它在类中查找std::vector,并在特定元素处查找glm::vec3。在循环中,我有一个迭代器,它指向下一个类。
我使用这些数据来计算一些向量。
如何检查(*nextSegIt)是否确实存在?当segIt到达最后一个元素时,我猜它会随机指向某个地方。
我尝试了一个if语句来检查它是否为NULL,或者它是否是向量数组的末尾,但两者都不能编译。
有人有什么建议吗?
提前谢谢。
std::vector<RoadSegement*>::iterator segIt;
std::vector<RoadSegement*>::iterator nextSegIt;
for (segIt = nextSegIt = m_segmentArray.begin(); segIt != m_segmentArray.end(); segIt++)
{
nextSegIt++;
(*segIt)->calculateVectors((*segIt)->getRoadSegmentCoords().at(3), (*segIt)->getRoadSegmentCoords().at(2), (*nextSegIt)->getRoadSegmentCoords().at(3));
}RoadSegment构造函数
RoadSegement::RoadSegement()
{
m_roadSegment.push_back(glm::vec3(-1, +1, 0));
m_roadSegment.push_back(glm::vec3(-1, -1, 0));
m_roadSegment.push_back(glm::vec3( 0, +1, 0));
m_roadSegment.push_back(glm::vec3( 0, -1, 0));
m_roadSegment.push_back(glm::vec3(+1, +1, 0));
m_roadSegment.push_back(glm::vec3(+1, -1, 0));
m_roadWidth = 0.5;
scale(m_roadWidth);
}calculateVectors()函数:
void RoadSegement::calculateVectors(glm::vec3 _point, glm::vec3 _nextPoint, glm::vec3 _nextNextPoint)
{
glm::vec3 vector0 = glm::vec3(m_roadSegment.at(2) - _point);
glm::vec3 vector1 = glm::vec3(m_roadSegment.at(1) - _point);
glm::vec3 vector2 = glm::vec3(m_roadSegment.at(5) - _point);
glm::vec3 vector3 = glm::vec3(_nextNextPoint - _nextPoint);
glm::vec3 vector4 = glm::vec3(m_roadSegment.at(0) - _nextPoint);
glm::vec3 vector5 = glm::vec3(m_roadSegment.at(4) - _nextPoint);
m_segmentVectors.push_back(vector0);
m_segmentVectors.push_back(vector1);
m_segmentVectors.push_back(vector2);
m_segmentVectors.push_back(vector3);
m_segmentVectors.push_back(vector4);
m_segmentVectors.push_back(vector5);
} 发布于 2015-01-07 06:55:13
很简单:检查是否为nextSegIt == m_segmentArray.end()。如果是这样,则该元素不存在。
如果没有NextNextPoint,显然必须调用不同的函数。您可以传递一个虚拟值,但不推荐这样做。
https://stackoverflow.com/questions/27808630
复制相似问题