随笔分类 -  STL

摘要:一、vector 概述 vector 的数据安排以及操作方式,与 array 非常相似。两者的唯一差别在于空间的运用的灵活性。array 是静态空间,一旦配置了就不能改变。 vector 是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此, vector 的运用对于内存的合理利 阅读全文
posted @ 2021-04-06 16:35 fengMisaka 阅读(669) 评论(0) 推荐(0) 编辑
摘要:迭代器的失效问题:对容器的操作影响了元素的存放位置,称为迭代器失效。 失效情况: 当容器调用erase()方法后,当前位置到容器末尾元素的所有迭代器全部失效。 当容器调用insert()方法后,当前位置到容器末尾元素的所有迭代器全部失效。 如果容器扩容,在其他地方重新又开辟了一块内存。原来容器底层的 阅读全文
posted @ 2021-04-06 14:39 fengMisaka 阅读(11387) 评论(2) 推荐(4) 编辑
摘要:转自 lx青萍之末 的 STL详解及常见面试题 一、各种容器的特点和适用情况 如果想进一步了解 STL 的各容器,可以先看我的另一篇博客:[C++ STL] 各容器简单介绍 二、vector 篇 2.1 vector 的底层原理 vector 底层是一个动态数组,包含三个迭代器,start 和 fi 阅读全文
posted @ 2021-01-20 09:28 fengMisaka 阅读(667) 评论(0) 推荐(0) 编辑
摘要:一、概述 STL算法部分主要由头文件 \,\,\ 组成。要使用 STL中的算法函数必须包含头文件 \,对于数值算法须包含 \,\ 中则定义了一些模板类,用来声明函数对象。 二、常用算法介绍 STL 中算法大致分为四类: 非可变序列算法:指不直接修改其所操作的容器内容的算法。 可变序列算法:指可以修改 阅读全文
posted @ 2019-01-13 22:25 fengMisaka 阅读(10700) 评论(0) 推荐(5) 编辑
摘要:一、概述 map 由红黑树实现,其元素都是 “键值/实值” 所形成的一个对组(key/value pairs)。每个元素有一个键,是排序准则的基础。每一个键只能出现一次,不允许重复。 map主要用于资料一对一映射的情况,map 内部自建一颗红黑树,这颗树具有对数据自动排序的功能,所以在 map 内部 阅读全文
posted @ 2019-01-12 22:21 fengMisaka 阅读(4748) 评论(0) 推荐(2) 编辑
摘要:一、概述 set 容器内的元素会被自动排序,set 与 map 不同,set 中的元素即是键值又是实值,set 不允许两个元素有相同的键值。不能通过 set 的迭代器去修改 set 元素,原因是修改元素会破坏 set 组织。当对容器中的元素进行插入或者删除时,操作之前的所有迭代器在操作之后依然有效。 阅读全文
posted @ 2019-01-12 21:01 fengMisaka 阅读(29828) 评论(1) 推荐(10) 编辑
摘要:一、概述 list 由双向链表(doubly linked list)实现而成,元素也存放在堆中,每个元素都是放在一块内存中,他的内存空间可以是不连续的,通过指针来进行数据的访问,这个特点使得它的随机存取变得非常没有效率,因此它没有提供 [] 操作符的重载。但是由于链表的特点,它可以很有效率的支持任 阅读全文
posted @ 2019-01-12 18:37 fengMisaka 阅读(16387) 评论(0) 推荐(3) 编辑
摘要:一、概述 deque(双端队列)是由一段一段的定量连续空间构成,可以向两端发展,因此不论在尾部或头部安插元素都十分迅速。 在中间部分安插元素则比较费时,因为必须移动其它元素。 二、定义及初始化 使用之前必须加相应容器的头文件: #include <deque> // deque属于std命名域的,因 阅读全文
posted @ 2019-01-12 16:18 fengMisaka 阅读(40682) 评论(5) 推荐(14) 编辑
摘要:一、概述 vector(向量): 是一种序列式容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组(动态数组),它的随机访问快,在中间插入和删除慢,但在末端插入和删除快 阅读全文
posted @ 2019-01-12 14:31 fengMisaka 阅读(5746) 评论(3) 推荐(1) 编辑
摘要:一、迭代器(iterator)介绍 指针可以用来遍历 存储空间 连续的数据结构,但是对于存储空间非连续的,就需要寻找一个行为类似指针的类,来对非数组的数据结构进行遍历。因此,我们引入迭代器概念。 迭代器(Iterator)是一种检查容器内元素并遍历元素的数据类型。迭代器是指针的泛化,它允许程序员用相 阅读全文
posted @ 2019-01-12 00:03 fengMisaka 阅读(5484) 评论(0) 推荐(0) 编辑
摘要:一、什么是STL? 1、STL(Standard Template Library),即标准模板库,是一个高效的C++程序库,包含了诸多常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。 2、从逻辑层次来看,在STL中体现了泛型化程序设计的思想( 阅读全文
posted @ 2019-01-11 12:47 fengMisaka 阅读(27893) 评论(7) 推荐(7) 编辑