永发信息网

关于c++中iterator进行遍历与普通的for循环进行遍历的疑问

答案:3  悬赏:40  手机版
解决时间 2021-02-16 06:26
vector vec[1111];

void DFS(int i)
{
visit[i]=1;
vector::iterator it;
for(it=vec[i].begin();it!=vec[i].end();it++)
if(visit[*it]==0)
DFS(*it);
/*
for(int i=1;i<=P;i++)
{
if(visit[i]==0)
{
DFS(i);
}
}
}

这是我代码中抽出来的一部分,我使用iterator进行遍历时正确的,使用简单的for循环是错误的,
这里的visit[]数组是标记无向图中的顶点是否被访问过 P是顶点数目

我的这个dfs想实现的是 判断这个无向图是否为欧拉图(还未判断奇点)
最佳答案
// 你的 i 变量是形参呀,这个 DFS 函数就是去遍历 vec[i] 这个数组的,修改如下
int nLen = vec[i].size();
for (int j = 0; j < nLen; j ++)
{
    if (visit[vec[i][j]] == 0)
    {
        DFS(vec[i][j]);
    }
}
全部回答
你可以输出调试信息,或者写日志看看为什么不一样 再看看别人怎么说的。
其实很简单,就是循环次数的问题,用int i 可能会导致索引超出int 的表示范围,从而导致错误!而使用迭代器就不会产生这样的问题了!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
(2010)设A是m阶矩阵,B是n阶矩阵,行列式等于
哈尔滨伯爵表维修中心有哪些地址
老山珍密山特产专卖店这个地址在什么地方,我
做兼职,工作是在网上开通证券公司的户,过程
在北京带了两张公交卡上车,下车时忘记上车时
成立合作社需要哪些步骤
储蓄卡怎么办
红旗小区北区地址在什么地方,想过去办事
如图,三角形ABC中,BD,CD分别平分角ABC和外角
牧野区新乡开锁换锁芯地址有谁知道?有点事想
智能电动晾衣机,好易点、晒帝、晾霸、好太太
御景园酒店这个地址在什么地方,我要处理点事
喜糖买成品还是自己批发用喜糖盒子包装合算?
黑豆喂母牛好吗
南翁家具厂在哪里啊,我有事要去这个地方
推荐资讯
展圆广告印务我想知道这个在什么地方
余弦+2正弦=—根号5 求正切
形容好吃的四字词
终极一班汪大东的鞋子
那思村在哪里啊,我有事要去这个地方
led护栏管八段是什么意思
我今年初一,想问一下毕业考上海音乐学院附中
跌马壕在哪里啊,我有事要去这个地方
发电厂有功负荷的调令有哪几种并做相应解释?
spe英文缩写是不是specimen
天平山怎么去啊,有知道地址的么
荷塘区株洲鑫鑫纸板衬布地址在哪,我要去那里
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?