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