C++初阶学习 第十二弹——stack与queue的介绍和使用

目录

一、stack(栈)

1.栈的概念:

2.成员函数包括:

3.栈的使用示例:

[4. 使用时的注意事项:](#4. 使用时的注意事项:)

二.queue(队列)

1.队列的概念

2.成员函数

3.队列的使用示例

4.使用时的注意事项

三.总结

一、stack(栈)

1.栈的概念:

C++中的**stack** 是一种遵循后进先出原则的容器适配器。它提供了一系列标准的操作,使得用户可以方便地实现栈这种数据结构

在C++标准库中,stack并不直接暴露给用户,而是作为<stack>头文件中stack模板类的声明。这个类是std::deque的封装,因此默认情况下,栈是通过双端队列实现的 。但是,用户也可以指定其他的容器作为栈的底层结构,比如std::vectorstd::list

2.成员函数包括:

3.栈的使用示例:

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<stack>
using namespace std;
int main()
{


        std::stack<int> L;

        // 压入一些数字
        L.push(1);
        L.push(2);
        L.push(3);

        // 打印栈顶元素
        std::cout << "栈顶元素: " << L.top() << std::endl;

        // 弹出栈顶元素
        L.pop();


  std::cout << "栈顶元素: " << L.top() << std::endl;


        // 检查栈是否为空
        if (L.empty()) {
            std::cout << "栈为空" << std::endl;
        }
        else {
            std::cout << "栈不为空,栈中有 " << L.size() << " 个元素" << std::endl;
        }
	
	return 0;
}

4. 使用时的注意事项:

确保不要超过栈的容量,否则可能会导致溢出。如果你需要频繁地访问栈中的元素,而不是仅仅进行 push 和 pop 操作,可能需要考虑使用其他数据结构。在模拟实现栈时,要注意内存管理,避免内存泄漏。

二.queue(队列)

1.队列的概念

queue是一种遵循先进先出原则的容器适配器。它提供了一系列标准的操作,使得用户可以方便地实现队列这种数据结构

2.成员函数

3.队列的使用示例

cpp 复制代码
#include <iostream>
#include <queue>
 
int main() {
    std::queue<int> numbers;
 
    // 插入一些数字
    numbers.push(1);
    numbers.push(2);
    numbers.push(3);
 
    // 打印队列的第一个元素
    std::cout << "队列的第一个元素: " << numbers.front() << std::endl;
 
    // 打印队列的最后一个元素
    std::cout << "队列的最后一个元素: " << numbers.back() << std::endl;
 
    // 弹出队列的第一个元素
    numbers.pop();

    
   std::cout << "队列的第一个元素: " << numbers.front() << std::endl;

    // 检查队列是否为空
    if (numbers.empty()) {
        std::cout << "队列为空" << std::endl;
    } else {
        std::cout << "队列不为空,队列中有 " << numbers.size() << " 个元素" << std::endl;
    }
 
    return 0;
} 

4.使用时的注意事项

确保不要超过队列的容量,否则可能会导致溢出。如果你需要频繁地访问队列中的元素,而不是仅仅进行 push 和 pop 操作,可能需要考虑使用其他数据结构。在模拟实现队列时,要注意内存管理,避免内存泄漏

三.总结

stack和queue的使用就讲到这里啦,相对简单使用起来,下节将讲述stack和queue有关的模拟实现。

创作不易请大佬们互三

相关推荐
再见晴天*_*4 小时前
SpringBoot 中单独一个类中运行main方法报错:找不到或无法加载主类
java·开发语言·intellij idea
lqjun08275 小时前
Qt程序单独运行报错问题
开发语言·qt
Hello_Embed5 小时前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
咸甜适中6 小时前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
Magnetic_h7 小时前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
hdsoft_huge7 小时前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot
风中的微尘7 小时前
39.网络流入门
开发语言·网络·c++·算法
研梦非凡7 小时前
ICCV 2025|从粗到细:用于高效3D高斯溅射的可学习离散小波变换
人工智能·深度学习·学习·3d
未来之窗软件服务8 小时前
幽冥大陆(二)RDIFSDK 接口文档:布草洗涤厂高效运营的技术桥梁C#—东方仙盟
开发语言·c#·rdif·仙盟创梦ide·东方仙盟
混分巨兽龙某某8 小时前
基于Qt Creator的Serial Port串口调试助手项目(代码开源)
c++·qt creator·串口助手·serial port