2021年11月15日 C++ STL库 deque&&stack

本文详细介绍了C++标准库中的两种容器:deque(双端队列)和stack(栈)。deque允许在两端进行插入和删除操作,提供了灵活的数据管理方式,包括构造、赋值、大小操作及插入删除等方法。stack则是一种后进先出(LIFO)的数据结构,主要操作包括构造、赋值、数据存取和大小查询。理解这两个容器对于C++编程至关重要。
摘要由CSDN通过智能技术生成

deque

 

 创建deque

deque<T> deqT; "默认构造形式"

deque(beg, end);  "构造函数将[beg, end)区间中的元素拷贝给本身(beg和end都是deque的迭代器"

deque(n, elem); "构造函数将n个elem拷贝给本身"

deque(const deque &deq); "拷贝构造函数"

deque赋值 

d2 = d1; "直接赋值"

d3.assign(d1.begin(), d1.end());

d4.assign(10, 100);

 deque大小操作

deque.empty(); "判断容器是否为空"
deque.size(); "返回容器中元素的个数"
deque.resize(num); "重新指定容器的长度为num,若容器变长,则以默认值填充新位置。"
                   "如果容器变短,则末尾超出容器长度的元素被删除。"
deque.resize(num, elem); "重新指定容器的长度为num,若容器变长,则以elem值填充新位置。"
                         "如果容器变短,则末尾超出容器长度的元素被删除。"

deque 插入和删除

首尾插入 

push_back(elem);  "在容器尾部添加一个数据"

push_front(elem);  "在容器头部插入一个数据"

pop_back();  "删除容器最后一个数据"

pop_front(); "删除容器第一个数据"

指定位置

insert(pos,elem);  "在pos位置插入一个elem元素的拷贝,返回新数据的位置。"

insert(pos,n,elem);  "在pos位置插入n个elem数据,无返回值。"

insert(pos,beg,end);  "在pos位置插入[beg,end)区间的数据,无返回值。"

clear();  "清空容器的所有数据"

erase(beg,end); "删除[beg,end)区间的数据,返回下一个数据的位置。"

erase(pos); "删除pos位置的数据,返回下一个数据的位置。"

 小结:erase和pop区别


 deque数据的读取

at(int idx); "返回索引idx所指的数据"

[]; "返回索引idx所指的数据"

front(); "返回容器中第一个数据元素"

back(); "返回容器中最后一个数据元素"

stack 

构造函数:
stack<T> stk;           "stack采用模板类实现, stack对象的默认构造形式"
stack(const stack &stk);  "拷贝构造函数"

赋值操作:
stack& operator=(const stack &stk); "重载等号操作符"

数据存取:
push(elem); "向栈顶添加元素"
pop();  "从栈顶移除第一个元素"
top();  "返回栈顶元素"

大小操作:
empty();  "判断堆栈是否为空"
size();  "返回栈的大小"

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值