vector容器中如何删除元素

本文介绍了在C++中如何从vector容器中删除满足特定条件的一个或所有元素的方法。提供了两种情况下的具体实现代码:一是仅删除找到的第一个匹配项;二是删除所有匹配项。

当需要从vector中删除元素时,需要整个vector容器去进行遍历

1、如果只需要删除某一个满足条件的元素不需要再继续查找时,使用以下方

void ItemsManager::deleteItems(vector<ItemsData>& vItemsList,string sName)
{
	vector<ItemsData>::iterator iter=vItemsList.begin();
	for(;iter!=vItemsList.end();)
	{
		if((*iter).getName()==sName)
		{
			iter=vItemsList.erase(iter);
		    break;
		}else
		{
			iter++;
		}
	}
}

使用引用的放法传入vector参数。

2、当需要从vector中删除所有满足条件的元素时,需要整个vector容器去进行遍历



void ItemsManager::deleteItems(vector<ItemsData>& vItems,string sName)
{
	vector<ItemsData>::iterator iter=vItems.begin();
	for(;iter!=vItems.end();)
	{
		if((*iter).getName()==sName)
		{
			iter=vItems.erase(iter);
		}else
		{
			iter++;
		}
}
	
C++中,`std::vector` 是一个动态数组容器,它提供了多种方法来管理其元素。如果你想删除 `std::vector` 中的某个元素,可以使用以下几种方法: 1. **使用 `erase` 方法**: `erase` 方法可以删除指定位置的元素或一段范围内的元素。 ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; // 删除第二个元素(索引为1) vec.erase(vec.begin() + 1); // 打印结果 for (int i : vec) { std::cout << i << " "; } return 0; } ``` 输出: ``` 1 3 4 5 ``` 2. **使用 `remove` 和 `erase` 组合**: 如果你需要删除所有等于某个值的元素,可以使用 `remove` 算法与 `erase` 方法的组合。 ```cpp #include <iostream> #include <vector> #include <algorithm> // std::remove int main() { std::vector<int> vec = {1, 2, 3, 2, 4, 2, 5}; // 删除所有值为2的元素 vec.erase(std::remove(vec.begin(), vec.end(), 2), vec.end()); // 打印结果 for (int i : vec) { std::cout << i << " "; } return 0; } ``` 输出: ``` 1 3 4 5 ``` 3. **使用 `pop_back` 方法**: 如果你只想删除最后一个元素,可以使用 `pop_back` 方法。 ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; // 删除最后一个元素 vec.pop_back(); // 打印结果 for (int i : vec) { std::cout << i << " "; } return 0; } ``` 输出: ``` 1 2 3 4 ``` 4. **使用 `clear` 方法**: 如果你想清空整个 `vector`,可以使用 `clear` 方法。 ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; // 清空 vector vec.clear(); // 打印结果 std::cout << "Vector size after clear: " << vec.size() << std::endl; return 0; } ``` 输出: ``` Vector size after clear: 0 ``` 这些方法可以帮助你根据不同的需求删除 `std::vector` 中的元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值