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有关的模拟实现。

创作不易请大佬们互三

相关推荐
CodeCraft Studio25 分钟前
PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 Base64
开发语言·python·pdf·base64·aspose·aspose.pdf
零点零一27 分钟前
VS+QT的编程开发工作:关于QT VS tools的使用 qt的官方帮助
开发语言·qt
Broken Arrows1 小时前
Linux学习——管理网络安全(二十一)
linux·学习·web安全
今天也要学习吖2 小时前
谷歌nano banana官方Prompt模板发布,解锁六大图像生成风格
人工智能·学习·ai·prompt·nano banana·谷歌ai
雁于飞2 小时前
vscode中使用git、githup的基操
笔记·git·vscode·学习·elasticsearch·gitee·github
鹅毛在路上了2 小时前
C++, ffmpeg, libavcodec-RTSP拉流,opencv实时预览
c++·opencv·ffmpeg
John_ToDebug2 小时前
定制 ResourceBundle 的实现与 DuiLib 思想在 Chromium 架构下的应用解析
c++·chrome·ui
rannn_1113 小时前
【Javaweb学习|实训总结|Week1】html基础,CSS(选择器、常用样式、盒子模型、弹性盒布局、CSS定位、动画),js(基本类型、运算符典例)
css·笔记·学习·html
lingchen19063 小时前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab