C++ STL 之 deque
#include <iostream>
#include <deque>
using namespace std; void PrintDeque(deque<int>& d)
{
for (deque<int>::iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
} // deque 初始化
// deque<T> deqT;//默认构造形式
// deque(beg, end);//构造函数将[beg, end)区间中的元素拷贝给本身。
// deque(n, elem);//构造函数将 n 个 elem 拷贝给本身。
// deque(const deque &deq);//拷贝构造函数。
void test01()
{
deque<int> d1;
deque<int> d2(, );
deque<int> d3(d2.begin(), d2.end());
deque<int> d4(d3);
PrintDeque(d1);
PrintDeque(d2);
PrintDeque(d3);
PrintDeque(d4);
cout << "------------------" << endl;
} // 赋值 大小操作
// assign(beg, end);//将[beg, end)区间中的数据拷贝赋值给本身。
// assign(n, elem);//将 n 个 elem 拷贝赋值给本身。
// deque& operator=(const deque &deq); //重载等号操作符
// swap(deq);// 将 deq 与本身的元素互换 // deque.size();//返回容器中元素的个数
// deque.empty();//判断容器是否为空
// deque.resize(num);//重新指定容器的长度为 num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
// deque.resize(num, elem); //重新指定容器的长度为 num,若容器变长,则以 elem 值填充新位置,如果容器变短,则末尾超出容器长度的元素被删除。
void test02()
{
deque<int> d1;
deque<int> d2;
deque<int> d3;
d1.assign(, );
d2.assign(d1.begin(), d1.end()); // 迭代器指定区间赋值
d3 = d2; // 等号赋值
PrintDeque(d1);
PrintDeque(d2);
PrintDeque(d3);
d1.swap(d2); // 交换两个空间元素
if (d1.empty())
{
cout << "空!" << endl;
}
else
{
cout << "size: " << d1.size() << endl;
}
d1.resize(); // 10个元素,后五个元素扔掉
cout << "------------------" << endl;
} // deque 容器插入和删除
// push_back(elem);//在容器尾部添加一个数据
// push_front(elem);//在容器头部插入一个数据
// pop_back();//删除容器最后一个数据
// pop_front();//删除容器第一个数据
void test03()
{
deque<int> d1;
d1.push_back();
d1.push_front();
d1.push_back();
d1.push_back();
d1.push_front();
PrintDeque(d1);
int val = d1.front(); // 拿到被删除的数据
d1.pop_front();
PrintDeque(d1);
val = d1.back();
d1.pop_back();
PrintDeque(d1);
cout << "------------------" << endl;
} // deque 数据存取
// at(idx);//返回索引 idx 所指的数据,如果 idx 越界,抛出 out_of_range。
// operator[];//返回索引 idx 所指的数据,如果 idx 越界,不抛出异常,直接出错。
// front();//返回第一个数据。
// back();//返回最后一个数据 // deque 插入操作
// insert(pos, elem);//在 pos 位置插入一个 elem 元素的拷贝,返回新数据的位置。
// insert(pos, n, elem);//在 pos 位置插入 n 个 elem 数据,无返回值。
// insert(pos, beg, end);//在 pos 位置插入[beg,end)区间的数据,无返回值。 int main()
{
test01();
test02();
test03();
getchar();
return ;
}
C++ STL 之 deque的更多相关文章
- 带你深入理解STL之Deque容器
在介绍STL的deque的容器之前,我们先来总结一下vector和list的优缺点.vector在内存中是分配一段连续的内存空间进行存储,其迭代器采用原生指针即可,因此其支持随机访问和存储,支持下标操 ...
- STL之deque双向队列
deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,提供随机访问,deque在接口上和vector非常相似,下面列出deque的常用成员函数: Table 6.9. C ...
- STL中deque
以下学习一下STL中另一种序列容器——deque. deque表示double-ended queue,即双向队列,deque是通过作为动态数组的方式实现的,这样可以在两端插入元素.因此,deque可 ...
- STL之Deque容器
1.Deque容器 1)deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的. 2)deque在接口上和vect ...
- STL中deque 解析
一.deque的中控器 deque是连续空间(至少逻辑上看来如此),连续线性空间总令我们联想到array或vector.array无法成长,vector虽可成长,却只能向尾端成长,而且其所谓的成长原是 ...
- [转]STL之deque容器详解
Deque 容器 deque容器是C++标准模版库(STL,Standard Template Library)中的部分内容.deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中 ...
- STL之Deque的使用方法
STL 中类 stack 实现了一个栈 1)push 能够插入元素 2)pop 移除栈顶元素 使用的时候,需要包含头文件 #include <stack>,stack 被声明如下: nam ...
- STL之deque
deque是一种优化了的,对序列两段进行添加和删除操作的基本序列容器.它允许较为快速的随机访问,但它不像vector把所有对象保存在一块连续的内存块,而是采用多个连续的存储块.向deque两段添加或删 ...
- STL之deque用法详解
C++ Deque(双向队列): Deque是一种优化了的.对序列两端元素进行添加和删除操作的基本序列容器.它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用 ...
- 【STL】-deque的用法
初始化: #include <deque> deque<float> fdeque; 算法: fdeque.push_front(f); fdeque.push_back(f) ...
随机推荐
- WebService技术规则
1.基于web的系统级接口规范 - 一个普通适用标准 :http+xml - 任何网络通信的操作系统 - 自包含.自描述.模块化 - 发布.定位.通过web调用 2. ...
- Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in 解决方案:$sql = ...
- 每个Xcode开发者应该知道的几个使用技巧
1.快速打开 快速打开(Open Quickly)命令在Xcode的File菜单中,当然,用快捷键Command+Shift+O会更方便一些.这个命令可以开启一个小窗格用来快速搜索浏览文件.类.算法以 ...
- Nginx+Keepalived高可用负载均衡
转自 https://www.jianshu.com/p/da26df4f7d60 Keepalived+Nginx实现高可用Web负载均衡 Master backup vip(虚拟IP) 192.1 ...
- Spring Aop(十)——编程式的Pointcut
转发地址:https://www.iteye.com/blog/elim-2396526 编程式的Pointcut 除了可以通过注解和Xml配置定义Pointcut之外,其实我们还可以通过程序来定义P ...
- 推荐一个好用的免费开源的笔记本软件CherryTree
我是一个好奇心很强的人,对未知的事物总有一种想要追根究底的冲动.多年以来,我学了很多东西,也学的很杂,积累了很多领域的知识.但不得不承认,人的记忆力很有限,学的越多忘的就越多.很久以前我就在想,怎么样 ...
- vue知识点积累
vue中 列表组件写key,起作用是什么? <ul> <li v-for="item in items" :key="item.id"> ...
- MSSQL 获取数据库、表、字段信息语句
--获取所有数据库名称 SELECT Name FROM Master..SysDatabases ORDER BY Name --获取库里所有表名 SELECT * FROM SysObjects ...
- upw,c#,代码实现关闭,重启应用
微软为uwp直接提供了这些API,可以很容易的直接进行调用 关闭 using Windows.ApplicationModel.Core; CoreApplication.Exit(); or usi ...
- Docker 安装 PHP
安装 PHP 镜像 查找Docker Hub上的php镜像 docker search php 这里我们拉取官方的镜像,标签为5.6-fpm docker pull php:5.6-fpm Nginx ...