C++:迭代向量

Mic*_*ync 1 c++

我是C++的新手,我正在尝试用C++学习矢量.

我写了如下的小程序.我喜欢像C#一样foreach(薪水中的var sal),但它不允许我这样做,所以我用谷歌搜索它,发现我必须使用iterator ..我能够编译并运行这个程序,但我没有得到预期输出..我得到"0 0 0 0 0 0 1 2 3 4 5 6 7 8 9"而不是"0 1 2 3 4 5 6 7 8 9"..

谁能解释一下为什么?谢谢.

#include <iostream>
#include <iomanip>
#include <vector>

using namespace std;

void show(int i)
{
  cout << i << " ";
}

int main(){

    vector<int> salaries(5);

    for(int i=0; i < 10; i++){
        salaries.push_back(i);
    }

    for_each(salaries.begin(), salaries.end(), show);   
}
Run Code Online (Sandbox Code Playgroud)

Car*_*rum 9

你创建了一个包含5个元素的向量,然后再将10个元素推到最后.这会给你总共15个元素,以及你所看到的结果.尝试更改向量的定义(特别是构造函数调用),然后设置.怎么样:

vector<int> salaries;
Run Code Online (Sandbox Code Playgroud)