vector 删除元素
时间: 2023-10-30 11:07:48 浏览: 102
vector删除元素有多种方法可以实现。一种方法是使用遍历覆盖法,遍历vector中的元素,将非目标元素前移覆盖到前半部分。另一种方法是使用相向双指针法,通过交换和删除最后一个元素实现删除操作。
以下是使用遍历覆盖法实现删除元素的代码:
```cpp
int removeElement(vector<int>& nums, int detarget) {
int size = 0;
for(auto x : nums) {
if(x != detarget) {
nums[size] = x;
size++;
}
}
return size;
}
```
以下是使用相向双指针法实现删除元素的代码(使用erase函数和swap函数配合):
```cpp
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--;
}
}
return nums.size();
}
```
相关问题
c++vector删除元素
以下是C++中删除vector元素的三种方法:
1. 使用`vector::erase()`方法删除指定位置的元素:
```cpp
vector<int> vec{1, 4, 3, 2, 5, 2};
auto it = vec.begin();
while (it != vec.end()) {
if (*it < 3) {
cout << "num is " << *it << endl;
it = vec.erase(it);
} else {
++it;
}
}
```
2. 使用`vector::pop_back()`方法删除末尾的元素:
```cpp
vector<int> vec{1, 4, 3, 2, 5, 2};
while (!vec.empty()) {
int num = vec.back();
if (num < 3) {
cout << "num is " << num << endl;
}
vec.pop_back();
}
```
3. 使用`vector::clear()`方法清空整个vector:
```cpp
vector<int> vec{1, 4, 3, 2, 5, 2};
vec.clear();
```
c++ vector删除元素
c++ vector删除元素的方法有几种。可以使用pop_back()函数删除最后一个元素,使用erase()函数删除指定位置的元素,或者使用remove()函数删除指定范围内的元素。另外,可以使用find()函数结合erase()函数来删除指定的元素。下面是对这些方法的详细说明:
方法一:使用pop_back()函数删除最后一个元素。
例如,如果vector名为vec,可以使用vec.pop_back()删除最后一个元素。
方法二:使用erase()函数删除指定位置的元素。
例如,如果vector名为vec,可以使用vec.erase(vec.begin() + index)删除索引为index的元素。
方法三:使用remove()函数删除指定范围内的元素。
例如,如果vector名为vec,可以使用vec.erase(remove(vec.begin(), vec.end(), value), vec.end())删除所有值为value的元素。
方法四:使用find()函数结合erase()函数删除指定的元素。
例如,如果vector名为vec,可以先使用find()函数找到要删除的元素的迭代器,然后使用erase()函数删除该元素。
例如:
vector<int>::iterator it = find(vec.begin(), vec.end(), value);
if (it != vec.end()) {
vec.erase(it);
}
阅读全文