如何检查迭代器指向的内容是否存在
How to check if what an iterator points to exists
我有一个循环,它遍历类向量。它在类中查找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);
}
很简单:检查是否nextSegIt == m_segmentArray.end()
. 如果是这样,则该元素不存在。
如果没有NextNextPoint,你显然必须调用一个不同的函数。 您可以传递虚拟值,但不建议这样做。
相关文章:
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 有了gcc,是否可以链接库,但前提是它存在
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 如何检查QList中是否存在值
- 根据某个函数是否存在启用模板
- 地图计数确实很重要,或者只是检查是否存在
- C++中是否存在 std::conditional 的懒惰等价物?
- 无论如何,我可以确定构造函数是否存在吗?
- COM :是否可以查看是否存在对我的某个 COM 对象的进程外引用?我可以释放它吗?
- 堆分配的对象是否存在永不为空的唯一所有者?
- 扩展类中的可选 vir 函数,测试它在运行时是否存在
- 模板化检查是否存在带有参数列表的类成员函数?
- 是否存在包含负号的isdigit函数(过载)
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 检查编译时是否存在静态函数
- 向量是否存在行主要形式?
- 检查 TinyXML 中的元素是否存在
- 检测是否存在具有 C++17 的类成员
- 虚拟继承中是否存在多重继承?
- 我遇到了这个代码片段,不明白. 它递归检查 C++ 字符串中是否存在大写字符