📅  最后修改于: 2023-12-03 15:23:47.221000             🧑  作者: Mango
在C++ STL中,列表(list)是一种基于双向链表实现的容器。当我们需要删除一个列表中的最后一个元素时,可以使用list类提供的成员函数rbegin()和rend()来访问列表的反向迭代器,再使用erase()函数删除最后一个元素。
下面是一个使用STL列表删除最后一个元素的示例代码:
#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> mylist = {1, 2, 3, 4, 5}; // 初始化列表
// 输出原列表
cout << "Original list: ";
for (auto i: mylist)
cout << i << " ";
cout << endl;
// 删除最后一个元素
mylist.erase(prev(mylist.end())); // 使用列表反向迭代器访问最后一个元素并删除
// 输出删除后的列表
cout << "List after removing last element: ";
for (auto i: mylist)
cout << i << " ";
cout << endl;
return 0;
}
输出:
Original list: 1 2 3 4 5
List after removing last element: 1 2 3 4
在上面的代码中,我们首先使用initializer_list初始化了一个包含5个元素的列表mylist。然后我们调用rbegin()和rend()函数生成列表的反向迭代器,使用prev()函数访问最后一个元素并删除。最后我们输出删除后的新列表。
要注意的是,如果链表为空,从end()返回的迭代器是未定义的,因此在访问end()之前,应该先检查列表是否为空。
另外,如果我们只是想删除列表中的最后一个元素而不关心其值,我们可以使用pop_back()函数,如下所示:
mylist.pop_back(); // 删除最后一个元素
这样就可以快速简洁地删除列表的最后一个元素了。