C++ <list> pop_front 函数
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;
}
#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_back 和 pop_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;
}
#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>