现在位置: 首页 > C++ 教程 > 正文

C++ <list> pop_front 函数

C++ 容器类 <list> C++ 容器类 <list>


pop_front 是 list 中用于删除链表头部元素的函数,是链表的特色操作之一。

pop_front 是容器类的成员函数,用于删除链表第一个元素。

与 vector 不同,list 在头部删除元素的时间复杂度是 O(1),非常高效。

单词释义pop 是弹出,front 是前面,合起来就是弹出前面的元素。


基本语法与参数

pop_front 是容器类的成员函数,调用它不需要参数。

语法格式

void pop_front();

参数说明

  • 参数: 无参数

函数说明

  • 返回值void (无返回值)。
  • 效果: 容器的 size() 会减少 1。第一个元素被删除。
  • 注意: 如果链表为空,调用 pop_front 是未定义行为。

实例

示例 1:基础用法 - 删除头部元素

实例

#include <iostream>
#include <list>

int main() {
    std::list<int> numbers = {10, 20, 30, 40, 50};

    std::cout << "原始 list: ";
    for(int n : numbers) std::cout << n << " ";
    std::cout << std::endl;

    // 删除头部元素
    numbers.pop_front();
    std::cout << "pop_front() 后: ";
    for(int n : numbers) std::cout << n << " ";
    std::cout << std::endl;

    numbers.pop_front();
    std::cout << "再 pop_front() 后: ";
    for(int n : numbers) std::cout << n << " ";
    std::cout << std::endl;

    return 0;
}

运行结果预期:

原始 list: 10 20 30 40 50
pop_front() 后: 20 30 40 50
再 pop_front() 后: 30 40 50

示例 2:实现队列

使用 push_backpop_front 可以实现队列。

实例

#include <iostream>
#include <list>
#include <string>

class Queue {
private:
    std::list<std::string> data;

public:
    void enqueue(const std::string& item) {
        data.push_back(item);
    }

    void dequeue() {
        if(!data.empty()) {
            data.pop_front();
        }
    }

    std::string front() const {
        return data.front();
    }

    bool empty() const {
        return data.empty();
    }

    size_t size() const {
        return data.size();
    }
};

int main() {
    Queue q;

    q.enqueue("用户A");
    q.enqueue("用户B");
    q.enqueue("用户C");

    std::cout << "队列大小: " << q.size() << std::endl;

    while(!q.empty()) {
        std::cout << "处理: " << q.front() << std::endl;
        q.dequeue();
    }

    return 0;
}

运行结果预期:

队列大小: 3
处理: 用户A
处理: 用户B
处理: 用户C

C++ 容器类 <list> C++ 容器类 <list>