C++ STL中的deque :: clear()和deque :: erase()
在C++ STL中,deque是一个双端队列容器,可以在队列前端和后端分别进行插入、删除和查找等操作。然而,在实际使用中,队列中有时需要删除或清空元素,此时就需要使用deque :: clear()和deque :: erase()方法。
deque :: clear()
clear()方法是用于从deque中删除所有元素并释放内存。该方法没有参数,可以被任何空的或包含元素的deque调用。以下是一个示例代码:
#include <iostream>
#include <deque>
using namespace std;
int main( ) {
deque <int> d1;
for (int i = 1; i <= 5; i++)
d1.push_back(i);
cout << "队列中的元素为:";
for (int i = 0; i < d1.size(); i++)
cout << d1[i] << " ";
cout << endl;
d1.clear();
cout << "队列已清空,元素个数为:" << d1.size();
return 0;
}
输出:
队列中的元素为:1 2 3 4 5
队列已清空,元素个数为:0
首先,在此代码中创建了一个包含值1到5的deque,并使用push_back()方法将它们插入。然后,用clear()方法来清空deque并输出其大小。
deque :: erase()
erase()函数是用于删除deque中指定范围内的元素。该函数有两个可选参数,分别是迭代器begin和迭代器end,其中begin是要删除元素的第一个元素的迭代器,end是要删除的元素的最后一个元素后的迭代器。以下是一个示例代码:
#include <iostream>
#include <deque>
using namespace std;
int main( ) {
deque <int> d1;
for (int i = 1; i <= 5; i++)
d1.push_back(i);
cout << "队列中的元素为:";
for (int i = 0; i < d1.size(); i++)
cout << d1[i] << " ";
cout << endl;
d1.erase(d1.begin(), d1.begin() + 2);
cout << "删除前两个元素后,队列中的元素为:";
for (int i = 0; i < d1.size(); i++)
cout << d1[i] << " ";
cout << endl;
return 0;
}
输出:
队列中的元素为:1 2 3 4 5
删除前两个元素后,队列中的元素为:3 4 5
在此代码中,我们创建一个包含值1到5的deque,并在其中插入元素。然后使用erase()方法,从列表的开始删除前两个元素(1和2),并输出更新后的队列。
结论
在本篇文章中,介绍了deque :: clear()和deque :: erase()方法用于删除deque中的元素。clear()方法用于删除整个deque,而erase()方法用于删除特定范围内的元素。这些方法在实际开发过程中非常有用,因为它们可以帮助您腾出内存空间,并删除不需要的元素。当然,在删除deque中的元素时,通常需要注意保存需要保留的元素,并且只删除不需要的元素。