Vector删除指定元素
2016-05-12 17:48
344 查看
Given an array
For example, given
开始做这个题的时候我也对Vector的erase的用法不是很清楚,所以使用nums.erase(i),
但是它一直报错,但是呢不想去百度这个题的答案,决心静下心来自己找出原因这样我弄明白以后,以后类似的问题都不会出错啦,O(∩_∩)O然后查阅各种资料终于明白啦
nums.erase(pos)通过地址找到指定元素并删除,这个地址可以通过iterator迭代法指向该元素,在此题中,i只是一个int型数据,不是一个地址,所以可以通过nums.begin()返回nums的首地址,在加上i即为下标为i的元素的地址。
nums, write a function to move all
0's to the end of it while maintaining the relative order of the non-zero elements.
For example, given
nums = [0, 1, 0, 3, 12], after calling your function,
numsshould be
[1, 3, 12, 0, 0].
class Solution { public: void moveZeroes(vector<int>& nums) { int num = nums.size(); for(int i=0;i<num;i++){ if(nums.at(i) == 0){ nums.erase(nums.begin()+i);//这里不能用nums.erase(i); nums.push_back(0); i--; num--; } } } };
开始做这个题的时候我也对Vector的erase的用法不是很清楚,所以使用nums.erase(i),
但是它一直报错,但是呢不想去百度这个题的答案,决心静下心来自己找出原因这样我弄明白以后,以后类似的问题都不会出错啦,O(∩_∩)O然后查阅各种资料终于明白啦
nums.erase(pos)通过地址找到指定元素并删除,这个地址可以通过iterator迭代法指向该元素,在此题中,i只是一个int型数据,不是一个地址,所以可以通过nums.begin()返回nums的首地址,在加上i即为下标为i的元素的地址。
相关文章推荐
- 图(Graph)的常用代码集合
- Java堆内存
- HDU 5568 sequence2 区间dp+大数
- 中国移动关于WEB应用渗透|Writeup
- 【python】python中的字符串及其格式化
- 23 ThreadLocal
- c语言文件操作
- 栅格数据自动矢量化
- 【面向代码】学习 Deep Learning(二)Deep Belief Nets(DBNs)
- 【第八章】 对ORM的支持 之 8.2 集成Hibernate3 ——跟我学spring3
- java冒泡排序法与选择排序法
- n位数乘一位数
- 函数的作用域
- 【转载】LVS+MYCAT+读写分离+MYSQL主备同步部署手册(邢锋)
- 【Node.js】使用iconv-lite解决中文乱码 (GB2312)
- Android符号表转换
- GEEK编程练习— —最长连续序列
- Java 值传递和对象传递详解
- 如何让UITextField在跳转后直接进入编辑状态
- 模式识别入门学习