2013-03-28 73 views
4

我与附带的Mac OX(LLVM 4.2锵编译C++ 11个功能)和下面的实验结果令我百思不解:差(INT I ..和foreach(汽车我

// clang compile with "c++ -std=c++11 -stdlib=libc++" 
#include <iostream> 
#include <vector> 
int main(void) { 
    using namespace std; 
    vector<int> alist={1, 2, 3, 4}; 

    for (int i=0; i<alist.size(); i++) { 
     cout << alist[i] << " "; 
    } 
    cout << endl; 

    for (auto i: alist) { 
     cout << alist[i] << " "; 
    } 
    cout << endl; 

    return 0; 
} 

等候运行环境,我得到不同的输出,如下所示:?

1 2 3 4 
2 3 4 0 

为什么我得到不同的结果

+0

尝试'矢量 alist = {“one”,“two”,“three”,“four”}; – MSalters 2013-03-28 12:20:31

回答

8
for (auto i: alist) 

这取每alist,所以i变为:

1,2,3,4 

您然后做

cout << alist[i] << " "; 

这意味着alist[1]alist[2]alist[3]alist[4]而不是值1,2,3, 4. 你只要简单地写:

cout << i << " ";