我有一个unordered_set,我需要选择每个元素并将其与所有其他元素进行比较。
注意:
我尝试了以下操作:
unordered_map <pair<int, int>, unordered_set <int>, boost::hash<std::pair<int,int>>> gridMap;
unordered_map <int, rigidBody*> objectsMap;
auto gridMapIt = gridMap.begin();
while (gridMapIt != gridMap.end()) // loop the whole gridMap
{
auto setItOut = gridMapIt->second.begin();
while (setItOut != gridMapIt->second.end()) // loop each element of the set
{
auto setItIn = gridMapIt->second.begin();
while (setItIn != gridMapIt->second.end()) // versus each other element
{
//compare and do stuff
++setItIn;
}
checked.insert({ objectsMap[*setItOut]->getID(), objectsMap[*setItIn]->getID() });
checked.insert({ objectsMap[*setItIn]->getID(), objectsMap[*setItOut]->getID() });
++setItOut;
}
++gridMapIt;
}
我遇到的错误是“表达式:无法取消引用结束列表迭代器”。如果我删除或评论最里面的while循环,则可以正常工作。
提前感谢。
循环后使用*setItIn
无效。此时,您有一个迭代器,该迭代器指向最后一个元素past