【发布时间】:2015-01-06 00:07:12
【问题描述】:
我有一个循环遍历每个键,然后遍历这些键的每个值。我为每个点创建一个 RoadSegment,并希望使用这些值来设置 RoadSegment 的坐标。为此,我需要迭代正在进行的当前 vec3 以及序列中的下一个。
有没有办法在序列中存储下一次迭代,以便我可以引用值 (*next).second 我尝试下一个创建另一个 std::multimap::iterator 然后设置 next = mapIt++ 但这似乎操纵了以下循环的 mapIt 值,因此前一个循环中的 next 与以下循环中的 mapIt 不同
非常感谢您的帮助。
for(int i = 0; i < m_genRoads->getKeyValueData().size(); i++)
{
int numberDesired = m_genRoads->getMultimapData().count(i) - 1;
std::multimap<int, glm::vec3>::iterator mapIt;
std::multimap<int, glm::vec3>::iterator next;
std::pair<std::multimap<int, glm::vec3>::iterator, std::multimap<int, glm::vec3>::iterator> it;
it = m_genRoads->getMultimapData().equal_range(i);
for(mapIt = it.first; mapIt != it.second; mapIt++)
{
next = mapIt++;
int distance = std::distance(it.first, mapIt);
if(distance != numberDesired)
{
std::cout<<"MAKE ROAD SEGMENT"<<std::endl;
RoadSegement* roadSegmentPointer = new RoadSegement();
**roadSegmentPointer->setYcoord((*mapIt), (*next));
roadSegmentPointer->setXcoord((*mapIt));**
m_segmentArray.push_back(roadSegmentPointer);
}
else
{
std::cout<<"..................."<<std::endl;
continue;
}
【问题讨论】: