大佬教程收集整理的这篇文章主要介绍了c – 删除删除习惯用法:删除return past-the-end-iterator后会发生什么?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
vector<int> v; ... v.erase(remove(v.begin(),v.end(),99),v.end());
remove基本上返回“新逻辑结束”和原始范围的元素,从范围的“新逻辑结束”开始并继续,直到范围的实际结束是要从容器中删除的元素.
听起来不错.现在,让我问一下我的问题:
在上面的例子中,如果在向量v中找不到99,则remove可以返回v.end().它基本上是将past-the-end-iterator传递给erase方法.
>将last-the-end-iterator传递给erase方法会发生什么?标准是否说它是UB?
>如果它是未定义的行为,那么Scott Meyer的书中的擦除 – 移除成语示例应该看起来像:
vector<int> v; ... vector<int>::iterator newEndIter = remove(v.begin(),99); if(newEndIter != v.end() ) { v.erase(newEndIter,v.end(); }
有什么想法吗?
以上是大佬教程为你收集整理的c – 删除删除习惯用法:删除return past-the-end-iterator后会发生什么?全部内容,希望文章能够帮你解决c – 删除删除习惯用法:删除return past-the-end-iterator后会发生什么?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。