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

创作不易请大佬们互三

相关推荐
edisao13 小时前
六、 读者高频疑问解答 & 架构价值延伸
大数据·开发语言·人工智能·科技·架构·php
超级大福宝13 小时前
【力扣200. 岛屿数量】的一种错误解法(BFS)
数据结构·c++·算法·leetcode·广度优先
范纹杉想快点毕业13 小时前
C语言实现埃拉托斯特尼筛法
c语言·开发语言
catchadmin13 小时前
Laravel12 + Vue3 的免费可商用 PHP 管理后台 CatchAdmin V5.1.0 发布 新增 AI AGENTS 配置
开发语言·php
一颗青果13 小时前
auto | 尾置返回类型 | decltype | using | typedef
java·开发语言·算法
江君是实在人14 小时前
java jvm 调优
java·开发语言·jvm
kylezhao201914 小时前
C# 中实现自定义的窗口最大化、最小化和关闭按钮
开发语言·c#
一苓二肆14 小时前
PUMA机械臂matlab仿真正逆解与路径规划
开发语言·matlab
Frank_refuel14 小时前
C++之继承
开发语言·c++
sunfove14 小时前
Python 自动化实战:从识图点击、模拟真人轨迹到封装 EXE 全流程教学
开发语言·python·自动化