vector怎么删除元素
时间: 2024-06-12 14:08:53 浏览: 71
(1)使用erase函数删除元素的方法如下:
int removeElement(vector<int>& nums, int detarget) {
for (int i = 0; i < nums.size(); i++) {
if(nums[i] == detarget){
nums.erase(nums.begin() + i);
i--; //由于容器size-1,还按原来的i的话相当于自动右移一位而漏掉一个元素
}
}
return nums.size();
}
(2)使用swap和pop_back()函数删除元素的方法如下:
int removeElement(vector<int>& nums, int detarget) {
for (int i = 0; i < nums.size(); i++) {
if(nums[i] == detarget){
swap(nums[i], nums[nums.size() - 1]); //将要删除的元素交换到最后
nums.pop_back();
i--; //这里的i--与上面的作用一样
}
}
return nums.size();
}
另外,还可以通过遍历覆盖法和相向双指针法来删除元素。遍历覆盖法的思路是,通过一次遍历将非目标元素前移覆盖到前半部分。相向双指针法则是使用两个指针从数组的两端向中间移动,将非目标元素交换到前半部分。在这里我为了简洁起见只提供了前两种方法的代码示例。
阅读全文