for_each和push_back()

时间:2016-06-12 09:16:52

标签: c++11 foreach lambda

我正在使用for_each和lambda函数进行一些测试,并且我坚持这个(用g ++ -std = c ++ 11编译,gcc版本5.3.1)

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {

    vector<int> vi = {1,1,1,1};
    int end =0;

    cout << "vi contains: ";
    for_each(vi.begin(), vi.end(),[](int i){
        cout << i << " ";
    });
    cout << endl;

    for_each(vi.begin(),vi.end(),[&](int i){
        cout << "i="<<i<<" ";
        if(i==1){
            vi.push_back(1);
            end++;
        }
    });

    cout << endl;
    cout << "end=" << end << endl;
    cout << "now vi contains: ";

    for_each(vi.begin(), vi.end(),[](int i){
        cout << i << " ";
    });
    cout << endl;
    return 0;
}

这是此代码的输出

vi contains: 1 1 1 1 
i=1 **i=0** i=1 i=1 
end=3
now vi contains: 1 1 1 1 1 1 1 

为什么在循环的第一次迭代中,我等于0?

0 个答案:

没有答案