首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查迭代器所指向的内容是否存在

如何检查迭代器所指向的内容是否存在
EN

Stack Overflow用户
提问于 2015-01-07 06:49:29
回答 1查看 295关注 0票数 0

我有一个循环,它遍历类的向量。它在类中查找std::vector,并在特定元素处查找glm::vec3。在循环中,我有一个迭代器,它指向下一个类。

我使用这些数据来计算一些向量。

如何检查(*nextSegIt)是否确实存在?当segIt到达最后一个元素时,我猜它会随机指向某个地方。

我尝试了一个if语句来检查它是否为NULL,或者它是否是向量数组的末尾,但两者都不能编译。

有人有什么建议吗?

提前谢谢。

代码语言:javascript
运行
复制
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构造函数

代码语言:javascript
运行
复制
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()函数:

代码语言:javascript
运行
复制
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);
} 
EN

Stack Overflow用户

发布于 2015-01-07 06:55:13

很简单:检查是否为nextSegIt == m_segmentArray.end()。如果是这样,则该元素不存在。

如果没有NextNextPoint,显然必须调用不同的函数。您可以传递一个虚拟值,但不推荐这样做。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27808630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档