1. 程式人生 > >怎麽刪除STL容器的元素

怎麽刪除STL容器的元素

pac 技術分享 cto tor 刪除 sin ace end out

在STL容器有順序容器和關聯容器兩種。

順序容器刪除元素的方法有兩種:

1.c.erase(p) 從c中刪除叠代器p指定的元素。p必須指向c中一個真實元素,不能等於c.end()。返回一個指向p之後元素的叠代器,若p指向c中的尾元素,則返回c.end()

2.3.c.erase(b,e) 刪除叠代器對b和e所代表的範圍中的元素。返回e

關聯容器刪除元素的方法有三種:

1.c.erase(k) 從c中刪除每一個關鍵字為k的元素。返回一個size_type值,指出刪除的元素的數量。

2.c.erase(p) 從c中刪除叠代器p指定的元素。p必須指向c中一個真實元素,不能等於c.end()。返回一個指向p之後元素的叠代器,若p指向c中的尾元素,則返回c.end()

3.c.erase(b,e) 刪除叠代器對b和e所代表的範圍中的元素。返回e

下面是順序容器刪除叠代器指定的元素:

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

int main()
{
	vector<int> vec;
	vec.push_back(1);
	vec.push_back(19);
	vec.push_back(1);
	vec.push_back(14);
	vec.push_back(6);
	vec.push_back(4);
	vec.push_back(3);
	for (auto it : vec)
	{
		cout << it << " ";
	}
	cout << endl;
	auto low = vec.begin();
	vec.erase(low+2);//刪除了叠代器low+2指定的元素
	for (auto it : vec)
	{
		cout << it << " ";
	}
    return 0;
}

  運行結果:

技術分享圖片

下面是順序容器刪除兩個叠代器之間的元素:

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

int main()
{
	vector<int> vec;
	vec.push_back(1);
	vec.push_back(19);
	vec.push_back(1);
	vec.push_back(14);
	vec.push_back(6);
	vec.push_back(4);
	vec.push_back(3);
	for (auto it : vec)
	{
		cout << it << " ";
	}
	cout << endl;
	auto low = vec.begin();
	vec.erase(low+2 , low + 4);//刪除了叠代器所表示的範圍中的元素,刪除了1和14
	for (auto it : vec)
	{
		cout << it << " ";
	}
    return 0;
}

  運行結果:

技術分享圖片

下面是關聯容器刪除指定關鍵字元素:

怎麽刪除STL容器的元素