C++ STL中的向量delete()和clear()

时间:2020-02-23 14:30:09  来源:igfitidea点击:

在本文中,我们将重点介绍STL提供的Vector容器的两个重要功能:擦除()和清除()。

这些通用类和功能由C++标准模板库(STL)提供,用于处理和管理数据。
让我们详细介绍一下C++中的矢量clear()和矢量erase()。

C++中的向量erase()

Vector提供的erase()函数基本上用于删除指定位置/索引处的元素。

函数delete()允许用户删除指定索引处的元素或者指定索引范围值内的数字范围。

语法:

vector.erase(index);
OR
vector.erase(start_index, end_index);

示例1:使用ease()方法删除指定索引处的项目

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

int main() 
{ 
	vector<int> v = {10, 20, 30, 40, 50, 60}; 
	vector<int>::iterator x; 

	x = v.begin();
	x++;

	v.erase(x); 
	for (auto x = v.begin(); x != v.end(); ++x) 
		cout<< *x<<endl;
	return 0; 
} 

在上面的代码片段中,我们将迭代器设置为第一个元素,即索引0。
然后,我们使用增量运算符(++)将迭代器的位置递增到了第二个元素,即索引1。

最后,我们已将迭代器的更新值作为向量擦除函数的参数传递,以删除索引为1的元素,即第二个元素(20)。

输出:

10
30
40
50
60

示例2:删除指定索引范围之间的一组项目。

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

int main() 
{ 
	vector<int> v = { 10, 20, 30, 40, 50, 60 }; 
	vector<int>::iterator x, y; 

	x = v.begin();
	x++;
	y = v.end();
	y--;

	v.erase(x,y); 
	
	for (auto x = v.begin(); x != v.end(); ++x) 
		cout<< *x<<endl;
	return 0; 
} 

在上面的代码中,我们将两个迭代器x,y设置为指向向量v。
我们将迭代器'x'设置为指向索引0,即向量的第一个元素,迭代器'y'指向向量的最后一个元素。

此外,我们已经将迭代器x递增以指向第二个元素(即20),并且将迭代器y递减以指向第二个最后一个元素(即50)。

最后,我们将x和y作为参数传递给了delete()函数,以删除指定范围之间的元素。

输出:

10
60

C++中的向量clear()方法

vector.clear()函数用于刷新或者删除向量占用的所有元素。
因此,它使向量完全为空,向量的大小变为零(0)。

语法:

vector.clear();

例:

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

int main() 
{ 
	vector<int> v = { 10, 20, 30, 40, 50, 60 }; 
	
      v.clear();
  
	for (auto x = v.begin(); x != v.end(); ++x) 
		cout<< *x<<endl;
	return 0; 
} 

上面的代码不会产生任何输出,因为vector.clear()函数将删除其中的所有元素。

输出:

No output