STL学习笔记— —特殊容器queue

简介

在头文件<queue> 中定义

namespace std
{
    template <typename T, typename Container = deque<T>> class queue;
}

queue就是数据结构里队列的实现,先进先出。定义中的第二个参数用来定义queue内部存放元素的实际容器,可以是任何序列式容器,默认容器为deque。

实际上queue也只是很单纯地把各项操作转化为内部容器的对应调用。

核心接口

push() //将一个元素置入queue内

front() //返回queue内头部元素

back() //返回queue内尾部元素

pop() //从queue中移除元素

需要注意的是,pop()移除下一个元素,但并不将它返回,而front()和back()返回元素的值,但不删除它。

栗子

#include <iostream>
#include <queue>
#include <string>

using namespace std;

int main()
{
    queue<string> q;

    //向队列里插入三个值
    q.push("These ");
    q.push("are ");
    q.push("more than ");

    //元素出队并显示
    cout << q.front();
    q.pop();
    cout << q.front();
    q.pop();

    //插入两个新值
    q.push("four ");
    q.push("words!");

    //元素出队
    q.pop();

    //元素出队并显示
    cout << q.front();
    q.pop();
    cout << q.front() << endl;
    q.pop();

    //输出队列的元素个数
    cout << "number of elements in the queue: " << q.size() << endl;

    return 0;
}

输出

These are four words!
number of elements in the queue: 0
时间: 2024-10-02 18:33:40

STL学习笔记— —特殊容器queue的相关文章

STL学习笔记— —特殊容器priority_queue

简介 在头文件<queue> 中定义 namespace std { template <typename T, typename Container = vector<T>, typename Compare = less<typename Container::value_type>> class priority_queue; } priority_queue与queue很类似,但是priority_queue内部根据某种规则进行了排序,所以既不是先进

STL学习笔记— —无序容器(Unordered Container)

简单介绍 在头文件<unordered_set>和<unordered_map> 中定义 namespace std { template <typename T, typename Hash = hash<T>, typename EqPred = equal_to<T>, typename Allocator = allocator<T> > class unordered_set; template <typename T

C++学习笔记5 容器

1.  使用assign assign 操作首先删除容器中所有的元素,然后将其参数所指定的新元素插入到该容器中.与复制容器元素的构造函数一样,如果两个容器类型相同,其元 素类型也相同,就可以使用赋值操作符(=)将一个容器赋值给另一个容器.如果在不同(或相同)类型的容器内,元素类型不相同但是相互兼容,则其赋值运 算必须使用assign 函数.例如,可通过assign 操作实现将vector 容器中一段char* 类型的元素赋给string 类型list 容器. 由于assign 操作首先删除容器中

STL学习笔记--&gt;初识STL

“这里要用char类型”; “这里要用int类型”; “其实实现这个方法只需要把另一个方法的返回值的类型和传入参数的类型改成float类型就实现了”; “其实这个算法只需要把以前写的那个稍微改动一下就行了”; ……………… 学过面向对象语言的都知道GP这个概念,就是泛型程序设计,说的再明白点就是编写不依赖于具体数据类型的程序,C++作为一门面向对象语言,当然也有泛型这个概念,这就不得不提STL(Standard Template Library,标准模板库),是被融入C++标准程序库里面的一个高

【stl学习笔记】deques

deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似.deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map容器)即一小块连续的空间,该空间中每个元素都是指针,指向另一段(较大的)区域,这个区域称为缓冲区,缓冲区用来保存deque中的数据.因此deque在随机访问和遍历数据会比vector慢. deque的各项操作只有以下两点与vector不同: 1.deques不提供容量操作(capacity()和re

STL学习笔记--3、迭代器iterator与traits编程

iterator模式:提供一种方法,依次巡访某个聚合物(容器)所含的各个元素,而无需暴露该聚合物的内部表达式. 1.迭代器设计思维 STL在于将数据容器和算法分开,彼此独立,最后再以一帖粘合剂将它们撮合在一起.只要对算法给予不同的迭代器,就可以对不同容器进行相同的操作. 算法find():接受两个迭代器和一个搜寻目标. //摘自SGI<stl_algo.h> template <class InputIterator, class T> InputIterator find(Inp

STL学习系列五:Queue容器

Queue简介 queue是队列容器,是一种“先进先出”的容器. queue是简单地装饰deque容器而成为另外的一种容器. #include <queue> 1.queue对象的默认构造 queue采用模板类实现,queue对象的默认构造形式:queue<T> queT; 如: queue<int> queInt; //一个存放int的queue容器. queue<float> queFloat; //一个存放float的queue容器. ... //尖括

STL学习笔记(序列式容器)

Vector Vector是一个动态数组. 1.Vector的操作函数 构造.拷贝和析构 vector<Elem> c //产生一个空vector ,其中没有任何元素 vector<Elem> c1(c2) //产生另一个同型vector的副本,(所有元素都被拷贝) vector<Elem> c(n) //利用元素的default构造函数生成一个大小为n的vector vector<Elem> c(n,elem) //产生一个大小为n的vector,每个元素

STL学习笔记

这篇笔记暂时只是一部分,后续的部分会慢慢贴出来.有错误之处还望大神指教 1,容器 (1)vector vector要求<vector>的头文件包含,实际的实现是在<stl_vector.h>中. vector的初始化方式: 1,直接初始化空: vector():start(0),end(0),end_of_storage(0){}; ex: vector<int> vec; 2,初始化并赋值 vector<int/double/long/decimal/float