在vector中由于有多个符合要求的元素需要删除如果直接删除后,指针直接++就会出现问题这是因为当erase后,iter就变成了一个野指针对一个野指针++是一定会出现错误的。
乍一看這段代码很正常。其实这里面隐藏着一个很严重的错误:当veci.erase(iter)之后iter就变成了一个野指针,对一个野指针进行 iter++ 是肯定会出错的
这段代码吔是错误的:1)无法删除两个连续的"3"; 2)当3位于vector最后位置的时候,也会出错(在veci.end()上执行 ++ 操作)
在vector中由于有多个符合要求的元素需要删除如果直接删除后,指针直接++就会出现问题这是因为当erase后,iter就变成了一个野指针对一个野指针++是一定会出现错误的。
乍一看這段代码很正常。其实这里面隐藏着一个很严重的错误:当veci.erase(iter)之后iter就变成了一个野指针,对一个野指针进行 iter++ 是肯定会出错的
这段代码吔是错误的:1)无法删除两个连续的"3"; 2)当3位于vector最后位置的时候,也会出错(在veci.end()上执行 ++ 操作)
在c++中,erase重载了2个函数分别是:删除迭代器指向的元素和删除迭代器区间中的所有元素。
erase
函数的返回值都是指向下一个元素的迭代器)
我想根据下标删除vector中的结构体vector元素
//怎样能根据下标删除其中任意任意项呢
}大家看看应该怎么做呢?谢谢大家了最好能给个代码
謝谢你,我就是删除后再++系统崩溃一开始没找出什么原因,看了后明白了
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。