C ++:for循环不迭代指定的次数(少1次迭代)

时间:2016-06-29 18:45:00

标签: c++ xcode for-loop vector iteration

我有一个for循环和一个变量C. 循环从0开始,预计运行C次,但实际上它运行C-1次。

这是我的代码:

    vector<int> v(1000) //Allocated globally



    int M, S, C;
    cin>>M>>S>>C;
    //cout<<M<<" "<<S<<" "<<C;
    int fi=0, la=0;

    for(int i=0; i<C; i++)
    {
        int f;
        cin>>f;

        if(i==0l){ fi = f;}
        v[f] = f;
        cout<<i<<" "<<f<<" "<<v[f]<<endl;
        if(i==C-1){ la = f;}
    }

这是我的测试用例 -

3 27 16 
        2 
        3 
        5 
        6 
        8 
        9 
        10 
        13 
        14 
        15 
        16 
        19 
        20 
        21 
        22 
        27

Xcode输出:

    0 2 2
    1 3 3
    2 5 5
    3 6 6
    4 8 8
    5 9 9
    6 10 10
    7 13 13
    8 14 14
    9 15 15
    10 16 16
    11 19 19
    12 20 20
    13 21 21
    14 22 22

我在Mac上使用Xcode会产生影响。 变量fi和la用于查找列表的第一个和最后一个元素。

我想知道我的for循环代码有什么问题,为什么它不迭代C次。

由于

1 个答案:

答案 0 :(得分:0)

你的循环 迭代C次。这是经典的Zero-Based Numbering问题。

让我解释一下使用C 16 和编号列表的示例:

  1. 2
  2. 3
  3. 5
  4. 6
  5. 8
  6. 9
  7. 10
  8. 13
  9. 14
  10. 15
  11. 16
  12. 19
  13. 20
  14. 21
  15. 22
  16. 27
  17. 所以你看到你的lopp 做了迭代了16次。要从 0 转到 16 ,实际上会再次迭代一次,所以 17 次。