C++ vector 元素数量变化不能使用范围 for
如果循环体内部包含有向vector对象添加元素的语句,则不能使用范围for循环,具体原因将在5.4.3节(第168页)详细解释。
WARNING:范围for语句体内不应改变其所遍历序列的大小。
▲《C++ Primer》 P91
不能在范围 for 循环中向 vector 对象添加元素。另外一个限制是任何一种可能改变vector对象容量的操作,比如 pushback,都会使该 vector对象的迭代器失效。9.3.6节(第315页)将详细解释迭代器是如何失效的。
WARNING:谨记,但凡是使用了迭代器的循环体,都不要向迭代器所属的容器添加元素。
▲《C++ Primer》 P99