我遇到了“在基于范围的循环 c++11 期间将元素添加到向量中std::vector
”,并且由于附加会使迭代器无效,因此不允许使用它并不奇怪。但是,插入std::list
不会使任何迭代器无效,所以我想知道是否允许使用std::list
而不是std::vector
.
例如
std::list<int> list({1});
for (int &cur : list)
{
std::cout << cur << " ";
if (cur < 10)
{
list.push_back(cur + 1);
}
}
它似乎编译得很好,但我担心它是未定义的行为。