c++vector中erase怎么用
时间: 2024-05-25 13:08:16 浏览: 83
在C++中,vector的erase函数可以用来删除vector容器中的元素。它有多种用法,常见的有以下几种:
1. 按照索引删除元素:
```
vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 2); // 删除索引为2的元素,即3
```
2. 按照迭代器删除元素:
```
vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 2;
vec.erase(it); // 删除迭代器指向的元素,即3
```
3. 删除一段区间内的元素:
```
vector<int> vec = {1, 2, 3, 4, 5};
vec.erase(vec.begin() + 1, vec.begin() + 4); // 删除索引为1到3的元素,即2、3、4
```
需要注意的是,使用erase函数后,被删除元素后面的元素会向前移动。如果需要删除多个元素,建议从后往前删除,避免出现不必要的移动。
相关问题
c++vector.erase
在C++中,vector的erase函数用于从vector中删除指定位置的一个或多个元素。它有两种常见的使用方式。首先,可以通过传递一个迭代器来删除单个元素。例如,可以使用以下代码删除vector中第三个元素:
vector<int> array;
array.erase(array.begin() + 2);
在这个例子中,array.begin()返回vector的起始迭代器,而+2表示移动两个位置,即到达第三个元素的位置。然后,erase函数将删除第三个元素。
第二种使用方式是通过指定一个范围来删除多个元素。例如,可以使用以下代码删除vector中所有等于300的元素:
vector<int> array;
// 向array中添加元素
vector<int>::iterator itor;
for (itor = array.begin(); itor != array.end(); ) {
if (*itor == 300) {
itor = array.erase(itor);
}
else {
++itor;
}
}
在这个例子中,我们使用迭代器遍历vector中的所有元素。如果元素的值等于300,我们使用erase函数删除该元素,并让迭代器指向下一个元素;否则,我们只需将迭代器自增1。这样做的原因是,erase函数会返回指向被删除元素之后位置的迭代器,因此我们需要更新迭代器的值。
最后,我们可以使用循环遍历vector并打印剩余的元素:
for (itor = array.begin(); itor != array.end(); ++itor) {
cout << *itor << " ";
}
这样就可以将剩余的元素输出到控制台上了。
综上所述,vector的erase函数可以通过传递一个迭代器来删除单个元素,也可以通过指定一个范围来删除多个元素。在删除多个元素时,需要注意更新迭代器的值。
C++ vector.erase
C++中的vector.erase()函数用于从vector中删除指定位置或指定范围的元素。它有不同的使用方法,引用和引用提供了两个错误的使用实例,而引用提供了正确的写法。
在错误的使用实例中,都是在遍历vector的过程中直接使用erase()函数删除元素。这是错误的,因为在使用erase()函数删除一个元素后,iterator指向的位置会被无效化,导致遍历出错。正确的写法是在删除元素后,将iterator自增,以确保遍历的正确。
下面是正确的写法:
vector<int> array;
array.push_back(100);
array.push_back(300);
array.push_back(300);
array.push_back(300);
array.push_back(300);
array.push_back(500);
vector<int>::iterator itor;
for (itor = array.begin(); itor != array.end();){
if (*itor == 300) {
itor = array.erase(itor);
} else {
itor++;
}
}
for (itor = array.begin(); itor != array.end(); itor++){
cout << *itor << " ";
}
在这个正确的写法中,我们在删除元素后使用了itor++来更新iterator的位置,以确保遍历的正确性。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [C++之vector的erase使用](https://blog.csdn.net/sinat_31608641/article/details/108478756)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文