#include <iostream>
#include <initializer_list>
#include <vector>
auto const v = std::vector<std::initializer_list<int>>{ { 0, 1, 2 }, { 3, 4 } };
int main()
{
for (auto const& l : v)
for (auto const& i : l)
std::cout << i << " ";
}
这段代码输出了垃圾值,例如:
13386064 0 -1305220240 32764 0
(在几个不同的编译器下都是如此)。如果我将
v
更改为std::vector<std::vector<int>>
,或将定义移到main
内部,则会按预期打印出0 1 2 3 4
。为什么?