您的位置:首页 > 其它

Vector删除指定元素

2016-05-12 17:48 344 查看
Given an array
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,
nums
should 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的元素的地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: