我正在尝试使用Mac OX(LLVM 4.2)附带的Clang编译器上的C ++ 11功能,以下结果让我感到困惑:
// 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 :(得分: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 << " ";