vector中erase()的使用
来源:互联网 发布:货标打印软件 编辑:程序博客网 时间:2024/06/09 18:18
vector::erase():从指定容器删除指定位置的元素或某段范围内的元素
vector::erase()方法有两种重载形式
如下:
iterator erase( iterator _Where);
iterator erase( iterator _First, iterator _Last);
如果是删除指定位置的元素时:
返回值是一个迭代器,指向删除元素下一个元素;
vector::erase()方法有两种重载形式
如下:
iterator erase( iterator _Where);
iterator erase( iterator _First, iterator _Last);
如果是删除指定位置的元素时:
返回值是一个迭代器,指向删除元素下一个元素;
如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素;
在C++primer中对c.erase(p) 这样解释的:
c.erase(p) 删除迭代器p所指向的元素,返回一个指向被删元素之后元素的迭代器,若p指向尾元素,则返回尾后迭代器,若p是尾后迭代器,则会产生未定义行为。
如果要想遍历一个容器,并且删除某个不符合要求的元素,那么最好使用while而不是使用for。因为使用for的时候会产生某些元素被略过,因为erase之后迭代器已经指向被删除元素的下一个元素了!!!用for的时候还会让迭代器自加一下,所以会直接跳到下一个元素的下一个元素!!即使在for中的erase之后,自减 了一下,也不是非常安全,因为如果你删除的元素是容器的第一个元素,那么回退的行为将是未定义的,切记!!!!
并且使用erase的格式为:
it = arr.erase(it);
并不是arr.erase(it); //在erase后,it失效,并不是指向vector的下一个元素,it成了一个“野指针”。
也就是说必须是对迭代器进行赋值操作!!!!
阅读全文
0 0
- vector中erase()的使用
- VC2008中Vector的erase使用
- C++中vector::erase方法的使用
- 关于vector的erase使用
- 关于 vector 中 erase 函数的使用注意事项
- (转)vector中使用erase删除元素
- vector中使用erase删除元素
- (转)vector中使用erase删除…
- vector中使用erase删除元素
- STL vector中remove()与erase()使用
- Vector中的 insert()和 erase()的使用
- MSDN 中 对vector::erase()的解释
- STL 中vector的erase问题
- 在vector的循环中调用erase
- std::vector中erase的用法误区
- std::vector中erase函数的用法
- 在vector的循环中调用erase
- STL Vector remove()和erase()的使用
- java代码获取近15天日期
- leetcode--Word Ladder
- 测试完整流程
- K近邻k-Nearest Neighbor(KNN)算法
- 笔试题 4
- vector中erase()的使用
- [Linux C编程]网络通信
- CCF CSP 201604-2 俄罗斯方块(Java-100分)
- makefile入门与基本语法
- Python 变量类型
- FreeMarker模板开发语句
- 最容易看懂的红黑树演变
- SparkStreaming算子reduceByKeyAndWindow的使用
- text1 + text2 =text3