C++容器适配器应用
C容器适配器应用容器适配器基于底层容器提供特定接口。标准库提供stack栈、queue队列和priority_queue优先队列三种适配器。stack提供后进先出的栈语义。#include#include#include#include#includevoid stack_example() {std::stack s;s.push(10);s.push(20);s.push(30);std::cout Stack size: s.size() \n;std::cout Top: s.top() \n;while (!s.empty()) {std::cout s.top() ;s.pop();}std::cout \n;}templateclass Stack {Container container_;public:void push(const T value) { container_.push_back(value); }void push(T value) { container_.push_back(std::move(value)); }void pop() {if (!container_.empty()) container_.pop_back();}T top() { return container_.back(); }const T top() const { return container_.back(); }bool empty() const { return container_.empty(); }size_t size() const { return container_.size(); }};void custom_stack_demo() {Stack s;s.push(1);s.push(2);s.push(3);while (!s.empty()) {std::cout s.top() ;s.pop();}std::cout \n;}queue提供先进先出的队列语义。void queue_example() {std::queue q;q.push(First);q.push(Second);q.push(Third);std::cout Front: q.front() \n;std::cout Back: q.back() \n;while (!q.empty()) {std::cout q.front() ;q.pop();}std::cout \n;}priority_queue默认是最大堆。void priority_queue_example() {std::priority_queue pq;pq.push(30);pq.push(10);pq.push(50);pq.push(20);std::cout Max heap: ;while (!pq.empty()) {std::cout pq.top() ;pq.pop();}std::cout \n;std::priority_queue, std::greater min_pq;min_pq.push(30);min_pq.push(10);min_pq.push(50);min_pq.push(20);std::cout Min heap: ;while (!min_pq.empty()) {std::cout min_pq.top() ;min_pq.pop();}std::cout \n;}优先队列实现任务调度。struct Task {int priority;std::string name;bool operator(const Task other) const {return priority other.priority;}};void task_scheduler() {std::priority_queue tasks;tasks.push({1, Low priority});tasks.push({5, High priority});tasks.push({3, Medium priority});tasks.push({4, Important task});while (!tasks.empty()) {auto task tasks.top();tasks.pop();std::cout Executing: task.name (priority: task.priority )\n;}}栈实现表达式求值。class ExpressionEvaluator {std::stack operands_;std::stack operators_;int precedence(char op) {if (op || op -) return 1;if (op * || op /) return 2;return 0;}int apply(int a, int b, char op) {switch (op) {case : return a b;case -: return a - b;case *: return a * b;case /: return a / b;default: return 0;}}public:int evaluate(const std::string expr) {for (size_t i 0; i expr.length(); i) {if (isspace(expr[i])) continue;if (isdigit(expr[i])) {int num 0;while (i expr.length() isdigit(expr[i])) {num num * 10 (expr[i] - 0);i;}--i;operands_.push(num);} else if (expr[i] () {operators_.push(expr[i]);} else if (expr[i] )) {while (!operators_.empty() operators_.top() ! () {int b operands_.top(); operands_.pop();int a operands_.top(); operands_.pop();char op operators_.top(); operators_.pop();operands_.push(apply(a, b, op));}if (!operators_.empty()) operators_.pop();} else {while (!operators_.empty() operators_.top() ! ( precedence(operators_.top()) precedence(expr[i])) {int b operands_.top(); operands_.pop();int a operands_.top(); operands_.pop();char op operators_.top(); operators_.pop();operands_.push(apply(a, b, op));}operators_.push(expr[i]);}}while (!operators_.empty()) {int b operands_.top(); operands_.pop();int a operands_.top(); operands_.pop();char op operators_.top(); operators_.pop();operands_.push(apply(a, b, op));}return operands_.top();}};void expression_demo() {ExpressionEvaluator eval;std::cout 3 5 * 2 eval.evaluate(3 5 * 2) \n;std::cout (3 5) * 2 eval.evaluate((3 5) * 2) \n;std::cout 10 - 3 * 2 4 eval.evaluate(10 - 3 * 2 4) \n;}双端队列实现滑动窗口最大值。std::vector max_sliding_window(const std::vector nums, int k) {std::vector result;std::deque dq;for (int i 0; i nums.size(); i) {while (!dq.empty() dq.front() i - k 1) dq.pop_front();while (!dq.empty() nums[dq.back()] nums[i]) dq.pop_back();dq.push_back(i);if (i k - 1) result.push_back(nums[dq.front()]);}return result;}void sliding_window_demo() {std::vector nums {1, 3, -1, -3, 5, 3, 6, 7};auto result max_sliding_window(nums, 3);std::cout Sliding window max: ;for (int v : result) std::cout v ;std::cout \n;}容器适配器提供了简洁的接口是算法实现的重要工具。

相关新闻

端午屈原祭-千古中华魂

端午屈原祭-千古中华魂

端午屈原祭-千古中华魂借蛋兄的这首歌祝端午节快乐

2026/6/20 15:54:21阅读更多 →
作用域与闭包:理解Python变量查找机制

作用域与闭包:理解Python变量查找机制

在 Python 编程中,作用域(Scope) 决定了变量的可见性和生命周期,而 闭包(Closure) 则是作用域机制的进阶应用,它让函数可以“记住”其定义时的环境。 理解作用域和闭包,不仅是写出正确代码的前提,更是掌握装饰器、回调函数、函数式编程等高阶技巧的基础。 然而,许多…

2026/6/20 15:54:21阅读更多 →
Java开发与大数据处理:Hadoop与Spark集成实战

Java开发与大数据处理:Hadoop与Spark集成实战

在当今数据驱动的时代,高效处理海量数据已成为企业保持竞争力的关键。Java作为企业级应用开发的主流语言,与大数据处理框架Hadoop和Spark的集成,为开发者提供了强大的工具组合。本文将深入探讨Java开发与Hadoop、Spark的集成实战,…

2026/6/20 15:54:21阅读更多 →
基于Simulink的SIR传染病模型仿真:从微分方程到可视化实现

基于Simulink的SIR传染病模型仿真:从微分方程到可视化实现

1. 从现实到模型:为什么我们需要SIR模型来理解病毒传播最近几年,大家对于“病毒传播”这个词已经不再陌生。无论是新闻里不断变动的感染曲线,还是生活中讨论的防控措施,背后都有一套数学模型在支撑着决策者的判断。这套模型里&…

2026/6/20 17:14:35阅读更多 →
为什么传统监控会失效?构建下一代分布式数据库性能洞察体系

为什么传统监控会失效?构建下一代分布式数据库性能洞察体系

为什么传统监控会失效?构建下一代分布式数据库性能洞察体系 【免费下载链接】oceanbase The Fastest Distributed Database for Transactional, Analytical, and AI Workloads. 项目地址: https://gitcode.com/GitHub_Trending/oc/oceanbase 在分布式数据库的…

2026/6/20 17:14:35阅读更多 →
Windows界面定制终极指南:5分钟打造专属桌面环境

Windows界面定制终极指南:5分钟打造专属桌面环境

Windows界面定制终极指南:5分钟打造专属桌面环境 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 还在为Windows 11的新界面感到困扰…

2026/6/20 17:14:35阅读更多 →
从“人工智障“到“智能管家“:如何让小爱音箱真正听懂你的心?

从“人工智障“到“智能管家“:如何让小爱音箱真正听懂你的心?

从"人工智障"到"智能管家":如何让小爱音箱真正听懂你的心? 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gp…

2026/6/20 17:14:35阅读更多 →
LFM2.5-Embedding-350M vs 竞品对比:为什么它是当前最佳的多语言嵌入模型

LFM2.5-Embedding-350M vs 竞品对比:为什么它是当前最佳的多语言嵌入模型

LFM2.5-Embedding-350M vs 竞品对比:为什么它是当前最佳的多语言嵌入模型 【免费下载链接】LFM2.5-Embedding-350M 项目地址: https://ai.gitcode.com/hf_mirrors/LiquidAI/LFM2.5-Embedding-350M 在多语言语义搜索和检索增强生成(RAG&#xff0…

2026/6/20 17:14:35阅读更多 →
CANN/ge GetOutputsSize API文档

CANN/ge GetOutputsSize API文档

GetOutputsSize 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow…

2026/6/20 17:09:35阅读更多 →
【课程设计/毕业设计】基于 Web 的高校县志馆藏信息综合管理系统设计与实现 基于Django的青岛滨海学院特色文献捐赠流转管理系统的设计与实现【附源码、数据库、万字文档】

【课程设计/毕业设计】基于 Web 的高校县志馆藏信息综合管理系统设计与实现 基于Django的青岛滨海学院特色文献捐赠流转管理系统的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/20 0:02:40阅读更多 →
MC68HC908RF2A定时器PWM生成原理与实战:无缓冲与缓冲模式详解

MC68HC908RF2A定时器PWM生成原理与实战:无缓冲与缓冲模式详解

1. 项目概述与核心价值在嵌入式开发,尤其是电机驱动、LED调光、开关电源这些需要精确控制“能量”的领域,脉冲宽度调制(PWM)技术是工程师手中的一把瑞士军刀。它的本质很简单:用一个固定频率的方波,通过改变…

2026/6/20 0:02:40阅读更多 →
在银河麒麟V10桌面(2205版本)上实战部署软RAID 1:从模块黑名单到自动挂载

在银河麒麟V10桌面(2205版本)上实战部署软RAID 1:从模块黑名单到自动挂载

1. 银河麒麟V10桌面系统与软RAID 1基础认知 第一次在银河麒麟V10桌面上折腾软RAID 1时,我踩了不少坑。这个国产操作系统基于Linux内核,但2205版本对软RAID模块做了特殊处理,需要额外操作才能正常使用。软RAID 1其实就是磁盘镜像技术&#xff…

2026/6/20 0:02:40阅读更多 →