vector 删除操作
时间: 2023-11-15 17:59:36 浏览: 48
vector是C++标准模板库中的一个容器,可以存储一组相同类型的数据。在使用vector时,我们可能需要删除其中的元素。vector提供了两种删除操作:删除前deleteNum行和删除前deleteNum列。
删除前deleteNum行的操作步骤如下:
1. 新建一个中间vector,并按行遍历。
2. 定义中间vector时需要确定中间vector大小,即为dataList_sortRow(dataList.size()-deleteNum,vector(dataList.size()))。
3. 遍历dataList,将第deleteNum行及其之后的行的数据存入中间vector中。
4. 将中间vector赋值给原vector,即为dataList = dataList_sortRow。
删除前deleteNum列的操作步骤如下:
1. 新建一个中间vector,并按列遍历。
2. 定义中间vector时需要确定中间vector大小,即为dataList_sortCol(dataList.size(), vector(dataList.size()-deleteNum))。
3. 遍历dataList,将第deleteNum列及其之后的列的数据存入中间vector中。
4. 将中间vector赋值给原vector,即为dataList = dataList_sortCol。
除此之外,vector还提供了删除尾部元素的操作,即vector.pop_back()。
相关问题
vector删除操作
在C++中,vector是一个动态数组,可以方便地进行元素的插入、删除和访问操作。下面是关于vector删除操作的介绍:
1. 使用erase函数:vector提供了erase函数来删除指定位置的元素。该函数接受一个迭代器参数,指定要删除的元素位置。例如,要删除vector中的第三个元素,可以使用以下代码:
```
vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 2);
```
这将删除vec中的第三个元素(值为3)。
2. 使用erase-remove惯用法:如果要删除vector中满足某个条件的元素,可以结合使用erase和remove算法。remove算法将满足条件的元素移到vector的末尾,并返回一个指向新的逻辑结尾的迭代器。然后,使用erase函数删除这些元素。例如,要删除vector中所有值为3的元素,可以使用以下代码:
```
vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(remove(vec.begin(), vec.end(), 3), vec.end());
```
这将删除vec中所有值为3的元素。
3. 使用pop_back函数:pop_back函数用于删除vector的最后一个元素。例如,要删除vector中的最后一个元素,可以使用以下代码:
```
vector<int> vec = {1, 2, 3, 4, 5};
vec.pop_back();
```
这将删除vec中的最后一个元素(值为5)。
C++ vector删除操作
C++ vector的删除操作有多种方式。其中一种是使用erase函数。该函数可以接受一个迭代器作为参数,用于指定要删除的元素的位置。例如,使用`vector.erase(iterator)`可以删除指定位置的元素。 该函数还支持一个重载版本,可以指定一个范围来删除一段连续的元素,范围是左闭右开的。例如,使用`vector.erase(first, last)`可以删除[first, last)范围内的元素。 这个范围是以迭代器表示的。 << ' ';
}
std::cout << std::endl;
return 0;
}
```
运行以上代码,将会输出删除操作后的vector元素:4 5 6 7 8 9 10。 [3]
另一种删除vector元素的方法是使用算法库中的remove_if函数结合erase函数。remove_if函数接受一个谓词(即函数返回值为bool类型的函数),用于判断元素是否需要被删除。然后,通过erase函数删除不满足条件的元素。下面是一个使用remove_if和erase函数删除vector元素的示例代码:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> vec{ 1, 1, 2, 3, 4, 5, 6 };
auto removeNumbers = [&](int number) -> bool {
return number < 3;
};
auto iterator = std::remove_if(vec.begin(), vec.end(), removeNumbers);
vec.erase(iterator, vec.end());
std::for_each(vec.begin(), vec.end(), [](int i) {
std::cout << i << ' ';
});
return 0;
}
```
运行以上代码,将会输出删除操作后的vector元素:3 4 5 6。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [C++ vector容器删除操作](https://blog.csdn.net/digitalkee/article/details/106979841)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [C++ vector的操作](https://blog.csdn.net/flyfish1986/article/details/124107056)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [C++ vector之删除元素](https://blog.csdn.net/qq_36770641/article/details/89355657)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]