C++为什么这段代码不起作用?

gig*_*igi -6 c++

vector<int> v = { 1,2,3,4,5 };
for (auto beg = v.begin(); beg != v.end();++beg)
{
    if (beg == v.begin())
        v.push_back(50);
}
Run Code Online (Sandbox Code Playgroud)

在运行时,它说:"矢量迭代器不可递增".

Fra*_*eux 9

请参见std :: vector :: push_back.

如果new size()大于capacity(),那么所有迭代器和引用(包括过去的迭代器)都将失效.否则只有过去的结束迭代器无效.

在您的示例中,beg是一个迭代器.它被push_back无效,你不能再使用了它.