vector 删除元素的几种方法

本文详细介绍了C++ STL中删除vector元素的四种方法:1) 使用pop_back()删除最后一个元素;2) 利用erase()删除特定位置元素;3) 通过std::remove配合erase删除特定值元素;4) 使用vector().swap(x)清空并释放内存。代码示例展示了每种方法的使用,并解释了std::remove的工作原理。
摘要由CSDN通过智能技术生成

vector 删除元素的几种方法
1、利用成员函数pop_back()可以删除最后一个元素;
2、利用成员函数erase()可以删除由一个iterator指出的元素;
3、通过STL中的算法库函数remove()删除指定的元素(与list容器自带的成员函数remove() 有较大的区别);
4、vector().swap(x),清空了容器,且释放了内存。

注意
std::remove其实并没有真正从容器中删除元素( 返回的是没有被删除的最后一个元素的位置,* 从first到这个返回值,就是不等于val的所有元素的序列* 。);list的成员函数remove,将list中满足条件的元素真正删除了。

代码

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

void initVector(vector<int>& temp_vector)
{
	temp_vector.push_back(1);
	temp_vector.push_back(4);
	temp_vector.push_back(3);
    temp_vector.push_back(2);
	temp_vector.push_back(6);
}

void printVector(vector<int>& temp_vector)
{
	for(int i=0; i<temp_vector.size(); i++)
	{
		cout<< temp_vector[i]<<",";
	}
	cout<<endl;
}


int main()
{
	// 1 pop_back()删除尾部元素
	vector<int> temp;
	initVector(temp);
	cout<<"原始数据为:"<<endl;
	printVector(temp);
	temp.pop_back();
	cout<<"pop_back()之后数据为:"<<endl;
	printVector(temp);
	cout<<"--------------------------"<<endl;

	temp.clear();
	initVector(temp);
	cout<<"原始数据为:"<<endl;
	printVector(temp);
	for(vector<int>::iterator i= temp.begin(); i!= temp.end(); i++)
	{
		if(*i== 2)
		{
			// temp.erase返回的是迭代器
			i= temp.erase(i);
		}
	}
	cout<<"erase()之后数据为:"<<endl;
	printVector(temp);
	cout<<"--------------------------"<<endl;

	temp.clear();
	initVector(temp);
	cout<<"原始数据为:"<<endl;
	printVector(temp);
	temp.erase(std::remove(temp.begin(), temp.end(), 2), temp.end());
	cout<<"使用std::remove之后数据为:"<<endl;
	printVector(temp);

	system("pause");
	return 0;
}

运行结果
原始数据为:
1,4,3,2,6,
pop_back()之后数据为:
1,4,3,2,

原始数据为:
1,4,3,2,6,
erase()之后数据为:
1,4,3,6,

原始数据为:
1,4,3,2,6,
使用std::remove之后数据为:
1,4,3,6,

C++vector中,有几种方法可以删除元素。一种常见的方法是使用erase()函数,它可以删除指定位置的元素指定范围的元素。另一种方法是使用pop_back()函数,它可以删除最后一个元素。此外,还可以使用remove()函数来删除指定元素。 以下是几种删除元素方法的示例代码: 方法一:使用erase()函数删除指定位置的元素 ```cpp #include <iostream> #include <vector> using namespace std; int main() { vector<int> vec; for(int i=0; i<10; i++) { vec.push_back(i); } vec.erase(vec.begin() + 5); // 删除第6个元素 for(int i=0; i<vec.size(); i++) { cout << vec[i << ' '; } cout << endl; return 0; } ``` 方法二:使用find()函数和erase()函数删除指定元素 ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> vec; for(int i=0; i<10; i++) { vec.push_back(i); } vector<int>::iterator it = find(vec.begin(), vec.end(), 2); vec.erase(it); // 删除值为2的元素 for(int i=0; i<vec.size(); i++) { cout << vec[i << ' '; } cout << endl; return 0; } ``` 根据需求,选择适合的方法进行元素删除操作。如果需要删除指定位置的元素,可以使用erase()函数,如果需要删除指定值的元素,可以先使用find()函数找到该元素的迭代器,然后再使用erase()函数删除元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【c++vector删除元素](https://blog.csdn.net/qq_39451578/article/details/115015639)[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_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值