这是代码
next = friendchain.begin()->first;
while(true) {
start = next;
next = friendchain[next];
if(next!=0) {
friendchain.erase(start);
groupcount++;
size = friendchain.size();
printf("size=%i\n", size);
//size = 0
}
if (next==0) {
size = friendchain.size();
printf("size=%i\n", size);
//size = 1!!!
if (friendchain.empty())
{
break;
//should go out of the loop here
} else {
next = friendchain.begin()->first;
// next has value of 3
}
}
}
我的朋友链地图的内容是:
1 - > 2和
2 - > 3
我不明白为什么其他部分会被执行
如果您需要更多代码,请告诉我
问候
答案 0 :(得分:1)
我删除了一些不需要的if语句,而你没有正确处理擦除。
auto itr = friendchain.begin();
while (itr != friendchain.end()) {
if (itr->first != 0) {
friendchain.erase(itr++);
groupcount++;
} else {
++itr;
}
std::size_t size = friendchain.size();
printf("size=%i\n", size);
}