📌  相关文章
📜  如何从C++ STL中的列表中删除最后一个元素(1)

📅  最后修改于: 2023-12-03 15:23:47.221000             🧑  作者: Mango

如何从C++ STL中的列表中删除最后一个元素

在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(); // 删除最后一个元素

这样就可以快速简洁地删除列表的最后一个元素了。