2013-03-28 74 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 << " ";