range for可否这么用?为什么
range for可不可以这么用?为什么?
在range for内部改变表达式的大小。
比如以下:
void main()
{
vector<int> ivec;
for (int i : ivec){
if (i>0)
ivec.push_back(i - 1);
}
}
------解决思路----------------------
range for
只应该读写容器中的元素,不应该修改容器的结构,包括增减元素
以 容器的size() ,iterator 等操作容器的,也要确保,
1)不会无限制的循环。
2)iterator 要确保有效。
在range for内部改变表达式的大小。
比如以下:
void main()
{
vector<int> ivec;
for (int i : ivec){
if (i>0)
ivec.push_back(i - 1);
}
}
------解决思路----------------------
range for
只应该读写容器中的元素,不应该修改容器的结构,包括增减元素
以 容器的size() ,iterator 等操作容器的,也要确保,
1)不会无限制的循环。
2)iterator 要确保有效。