什么是 peek 函数?
peek 函数是一种常见的操作,用于查看数据结构(如栈、队列)顶部或前端的元素,而不会将其移除。它常用于需要预览下一个元素但不改变数据结构状态的场景。
常见用途
- 在编译器或解析器中预读下一个字符或标记
- 在算法中判断是否满足继续处理的条件
- 调试或日志记录时检查当前状态而不影响流程
代码示例
C++(使用 std::stack)
#include <iostream>
#include <stack>
int main() {
std::stack<int> s;
s.push(10);
s.push(20);
std::cout << "Top element: " << s.top() << std::endl; // 相当于 peek
std::cout << "Size after peek: " << s.size() << std::endl; // 未改变
return 0;
}
Python(自定义栈)
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def peek(self):
if not self.is_empty():
return self.items[-1]
raise IndexError("peek from empty stack")
def is_empty(self):
return len(self.items) == 0
s = Stack()
s.push(1)
s.push(2)
print("Peek:", s.peek()) # 输出: 2
print("Length:", len(s.items)) # 仍为 2
Java(使用 ArrayDeque)
import java.util.ArrayDeque;
public class Main {
public static void main(String[] args) {
ArrayDeque<Integer> deque = new ArrayDeque<>();
deque.push(5);
deque.push(10);
System.out.println("Peek: " + deque.peek()); // 输出: 10
System.out.println("Size: " + deque.size()); // 仍为 2
}
}
注意事项
调用 peek 时需确保容器非空,否则可能引发异常(如 EmptyStackException 或 IndexError)。建议在调用前进行空值检查。