相关疑难解决方法(0)

迭代器失效规则

C++容器的迭代器失效规则是什么?

优选地以摘要列表格式.

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ iterator c++-faq c++11 c++17

509
推荐指数
6
解决办法
11万
查看次数

C++ Map 迭代器陷入无限循环

我一个迭代mapC++使用for loop,但它是一个无限循环stucking。我已经搜索了其他类似的问题,最接近的是这个问题,但对那个问题的回答并没有回答我的查询,因为在那个问题中,作者正在对地图对象进行更改,但我没有对地图对象进行任何更改期间for loop

我的代码如下(我尝试注释不同的行并发现无限循环是由第 11 行 ( else statement)引起的,但我无法弄清楚确切的问题):

int main(){
    map<int,int> dic; //dic is the relevant map object
    dic[0]=1; dic[1]=1; dic[2]=1; dic[3]=1; //dic = {0:1, 1:1, 2:1, 3:1}

    int k=1;
    int sol=0;

    for(map<int,int>::iterator iter=dic.begin(); iter!=dic.end(); iter++){
        int a=iter->first; int b=iter->second;
        if(k==0) sol+=b*(b-1)/2;
        else sol+=b*dic[a+k]; //after some trials, I found that problem is in this line but I couldn't figure out the problem
    }
    return sol;
}
Run Code Online (Sandbox Code Playgroud)

c++ dictionary infinite-loop

0
推荐指数
1
解决办法
151
查看次数

标签 统计

c++ ×2

c++-faq ×1

c++11 ×1

c++17 ×1

dictionary ×1

infinite-loop ×1

iterator ×1