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

创作不易请大佬们互三

相关推荐
汀、人工智能1 分钟前
[特殊字符] 第58课:两个正序数组的中位数
数据结构·算法·数据库架构··数据流·两个正序数组的中位数
liu****1 分钟前
第16届省赛蓝桥杯大赛C/C++大学B组(京津冀)
开发语言·数据结构·c++·算法·蓝桥杯
fengfuyao9852 分钟前
VC++基于服务器的点对点文件传输实例
服务器·开发语言·c++
汀、人工智能9 分钟前
[特殊字符] 第79课:分割等和子集
数据结构·算法·数据库架构·位运算·哈希表·分割等和子集
咬_咬10 分钟前
go语言学习(基本数据类型)
开发语言·学习·golang·数据类型
Y0011123611 分钟前
MySQL-进阶
开发语言·数据库·sql·mysql
Crazy________17 分钟前
docker4.8
java·开发语言·eureka
山甫aa20 分钟前
List 容器 -----C++的stl学习
开发语言·c++·学习
汀、人工智能20 分钟前
[特殊字符] 第74课:完全平方数
数据结构·算法·数据库架构·图论·bfs·完全平方数
cch891821 分钟前
Laravel 2.x:早期框架的奠基之路
java·开发语言