原文:C++中使用vector.erase()需要注意的事项

本人菜鸟一枚。。 今天在用vector.erase 的时候,发现总是不能把应该erase掉的东西erase干净。 举个栗子: 乍一看似乎没问题。 首先,用num vec i 而不用迭代器iterator可以避免出现 野指针 的问题,但是不知道二者性能上有没有差别 其次,执行num vec.erase num vec.begin i 操作后,num vec中减少一个元素,这时num vec i 代表 ...

2014-06-05 16:31 0 48116 推荐指数:

查看详情

C++ vector erase函数的使用注意事项

最近使用了顺序容器的删除元素操作,特此记录下该函数的注意事项。 在C++primer中对c.erase(p) 这样解释的: c.erase(p) 删除迭代器p所指向的元素,返回一个指向被删元素之后元素的迭代器,若p指向尾元素,则返回尾后迭代器,若p是尾后迭代器,则会产生 ...

Mon Dec 19 03:44:00 CST 2016 0 12282
C++ map中使用erase应该注意到的问题

注意:此程序在win环境下会出现上述描述的问题;在mac环境下第一种方式是正常运行的。Map.erase有3个重载函数: void erase(iterator position); size_type erase(const key_type& x ...

Tue Oct 02 18:55:00 CST 2018 0 3478
剖析vector.erase()实现

先看以下代码: 结果竟然如下: 我们将其删除前后每个元素的地址打印出来,如下: erase在删除当前元素后,会将其后元素前移,以保证vector的连续存储。 vs编译器erase实现: `stl_vector.h`实现: 上面程序 ...

Fri May 31 23:31:00 CST 2019 0 972
C】——使用creat()函数需要注意事项

  若成功则返回为只写打开的文件描述符,若出错则返回-1;   有时候我们使用creat函数的时候可能会得不到我们想要的结果。例如:   当我们使用次函数的目的创建一个文件——foo,foo的属性为 -rw-rw-rw-;   但是我们执行完creat函数之后 ...

Sat Sep 14 02:32:00 CST 2013 0 3898
vectorerase用法注意事项

以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错。今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin() 和vector.end()是变化的,因此就引入了错误的可能性。 erase的函数原型有两种形式 ...

Tue Oct 04 19:20:00 CST 2016 1 19225
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM