侯捷STL学习(八)-- 深度探索deque
layout: post
title: 侯捷STL学习(八)
date: 2017-07-19
tag: 侯捷STL
第十八节 深度探索deque上
duque
内存结构- 分段连续,用户看起来是连续的
- 迭代器为了维持连续的状态,每次++,--都需要判断当前buffer是否用完,若用完则需要通过控制中心跳到下一个buffer
- 控制中心的map是指向vector的,以后也是2倍增长
deque iterator
迭代器实现,关键有指向map的指针
deque<T>::insert
讲解- 很好体现deque的灵活性
- 要判断插入位置离首尾那个近一些,插入操作涉及元素搬移
第十九节 深度探索deque下
- deque如何实现连续空间
- 主要是迭代器运算符重载实现
- 用后++(i++)调用前++(++i)
前++(++i)其中i作为对象,self& operator++(){}返回引用,这样可以进行两次前++
后++ (i++) self operator++(int){},阻止两次后++
++++i对的++(++i);不允许两次后++ (i++)++
G4.9
实现- 控制中心实际为vector,当不足的时候,成两倍的增长,此时copy数据到新vector的中心位置,这样方便两边数据的增长
queue,stack
的实现
底层用deque实现,实际操作调用deque的函数
有时不把queue,stack当作容器
stack,queue都不允许遍历,不提供iterator
stack,queue也可以选择list做底层实现,默认选择duque做底层
queue不可选择vector做底层实现,stack也可以用vector做底层实现
编译器不会对容器做全面的检查,当没有调用错误的函数时候,编译器不会报错!
侯捷STL学习(八)-- 深度探索deque的更多相关文章
- 侯捷STL学习(七)--深度探索vector&&array
layout: post title: 侯捷STL学习(七) date: 2017-06-13 tag: 侯捷STL --- 第十六节 深度探索vector vector源码剖析 vector内存2倍 ...
- 侯捷STL学习(十)--容器hashtable探索(unordered set/map)
layout: post title: 侯捷STL学习(十) date: 2017-07-23 tag: 侯捷STL --- 第二十三节 容器hashtable探索 hashtable冲突(碰撞)处理 ...
- 侯捷STL学习(11)--算仿+仿函数+适配器
layout: post title: 侯捷STL学习(十一) date: 2017-07-24 tag: 侯捷STL --- 第三讲 标准库内核分析-算法 标准库算法形式 iterator分类 不同 ...
- 侯捷STL学习(12)--STL相关内容hash+tuple
layout: post title: 侯捷STL学习(12) date: 2017-08-01 tag: 侯捷STL --- 第四讲 STL相关的内容 Hash Function 将hash函数封装 ...
- 侯捷STL学习(九)--关联式容器(Rb_tree,set,map)
layout: post title: 侯捷STL学习(九) date: 2017-07-21 tag: 侯捷STL --- 第十九节 容器rb_tree Red-Black tree是自平衡二叉搜索 ...
- 侯捷STL学习(一)
开始跟着<STL源码剖析>的作者侯捷真人视频,学习STL,了解STL背后的真实故事! 视频链接:侯捷STL 还有很大其他视频需要的留言 第一节:STL版本和重要资源 STL和标准库的区别 ...
- 侯捷STL学习(一)--顺序容器测试
开始跟着<STL源码剖析>的作者侯捷真人视频,学习STL,了解STL背后的真实故事! 视频链接:侯捷STL 还有很大其他视频需要的留言 第一节:STL版本和重要资源 STL和标准库的区别 ...
- 侯捷STL学习(六)--深入list && Iterator traits
第十三,四节 深度探索list(上,下) list Gnu2.9源代码实现 注意node代码和图示的位置 实现前闭后开,增加一个空白节点 用的分配器alloc Iterator智能指针,需要知道结点n ...
- 侯捷STL学习(四)--allocator和容器时间的实现关系
第十一节 分配器 分配器的好坏影响到容器的性能 operator new()里面调用malloc D:\Program Files (x86)\Microsoft Visual Studio 12.0 ...
随机推荐
- shell 读取文件的每一行内容并输出
(1)#!/bin/bash while read linedo echo $linedone < file (2)#!/bin/bash cat file | while read l ...
- SCOI2017酱油记
Day0: 虽然是8点30开始模拟赛,还是设了个7点的闹钟调节生物钟.结果硬生生睡到7点40... 打开题目:T1期望,直接弃掉(到现在都不会期望已经可以滚粗了..) T2一眼可做,恩,先写个暴力.然 ...
- table-layout 属性
最近被测试提了一个bug,表单的某个字段有1300的字数限制,测试填了1300字,提交后,表格上的呈现丑爆了,那个字段的所在的列撑满了整个表格,其他列被压缩的很小. 后来知道了table-layout ...
- java中i=i++问题分析
http://www.ticmy.com/?p=43 重点:局部变量表 和 操作数栈的执行过程. 使用javac编译后再使用javap -c Test反编译这个类查看它的字节码,如下(只摘取main方 ...
- [Alfred]为Baidu Weather Workflow更新图标
Alfred workflow:百度天气,修改更新图标显示: 下载:https://github.com/BobSte/weather-workflow 原始代码是php脚本,为其增加了一个取图片的函 ...
- Jfinal整合百度富文本编辑器ueditor
ueditor配置文件ueditor.config.js修改参数serverUrl:(改为要调用的action) 后台代码 package com.sandu.mega.admin.ueditor; ...
- Linux(CentOS)下.NET,mono环境的安装步骤整理
本文Linux使用的是CentOS 7 1.软件下载 CentOS:https://www.centos.org/download/ mono-4.2.1.36.tar.bz2 http://down ...
- Java企业微信开发_15_查询企业微信域名对应的所有ip
一.前言 二.方法 1.在线网站 百度搜索"域名查IP",可查到如下网站,输入域名即可查到所有IP: 站长工具 site.ip138.com tools.ipip.net 2.li ...
- List集合添加自定义对象
public class Student { private String name; private int age; public Student() { super(); } public St ...
- linux install JDK
安装JDK 下载jdk-6u23-linux-i586.bin,samba,FTP cd /usr/local/src/ wget http://www.aminglinux.com/bbs/data ...