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

创作不易请大佬们互三

相关推荐
yanghuashuiyue21 小时前
lambda+sealed+record
java·开发语言
闻缺陷则喜何志丹21 小时前
【前后缀分解】P9255 [PA 2022] Podwyżki|普及+
数据结构·c++·算法·前后缀分解
每天吃饭的羊21 小时前
时间复杂度
数据结构·算法·排序算法
yzx9910131 天前
Python数据结构入门指南:从基础到实践
开发语言·数据结构·python
消失的旧时光-19431 天前
智能指针(二):机制篇 —— 移动语义与所有权转移
c++·智能指针
衍生星球1 天前
【JSP程序设计】Servlet对象 — page对象
java·开发语言·servlet·jsp·jsp程序设计
扶苏瑾1 天前
线程安全问题的产生原因与解决方案
java·开发语言·jvm
QQ24391971 天前
语言在线考试与学习交流网页平台信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·spring boot·sql·学习·java-ee
ValhallaCoder1 天前
hot100-堆
数据结构·python·算法·
小小小米粒1 天前
函数式接口 + Lambda = 方法逻辑的 “插拔式解耦”
开发语言·python·算法