C++ STL汇总
文章平均质量分 58
Cypress1010
这个作者很懒,什么都没留下…
展开
-
C++ STL Algorithm部分概述
相比现在的一些脚本语言,C++在开发效率上显得有点跟不上节奏,主要是 C ++ 在给人感觉能够直接使用的第三方库太少,相比Python、Node.js等一些脚本语言,他们在开源社区有人源源不断的提供开源库,使得你在开发项目时可以像堆积木一样玩耍。C++ STL标准模板库(STL)里面提供了一些常用的函数接口,这些常用的函数主要是配合STL里面的容器、迭代器进行使用。原创 2016-12-15 13:25:16 · 508 阅读 · 0 评论 -
C++ STL unordered_map介绍与使用方法
unordered_map(无序映射)对于map,前面已经提到过,其内部数据结构为红黑树,因此所有元素插入到map里面都会排好序,而且搜索过程为平衡二叉树搜索,因此时间复杂度为$O(logN)$。我们知道还有一种快速的搜索方法,那边是哈希(又名散列),利用哈希函数,通过哈希值能快速的查找到所需元素。unordered_map便是采用这种数据结构实现,unordered _map与map的使用基本一样原创 2016-12-15 13:35:06 · 48468 阅读 · 5 评论 -
C++ STL list介绍与使用方法
list(链表)链表也即链式表,在数据结构中,我们知道线性表的物理存储结构有两种,顺序表(数组)和链式表(结点)。链表是在堆中为每一个元素分配内存,然后利用指针将所有元素串起来。根据这种物理存储结构,我们很容易明白:链表在插入、删除效率上比较高,但没有办法随机访问,因此访问速度慢。 顺序表在STL中的实现为vector,其优点是元素访问速度快(元素存储在连续的数组中,可以直接通过索引计算元素地址)原创 2016-12-15 13:34:14 · 5603 阅读 · 0 评论 -
C++ STL deque介绍与使用方法
deque(双端队列)双端队列可以看成是在队列的基础上进行了扩展,我们知道队列的操作只能是在头尾,并且出队列只能是在头部,入队列只能是在尾部。同时双端队列又是顺序容器,因此可以随机访问每个元素。所以,双端队列综合了队列与序列容器的共同特点。 虽然deque是序列容器,但它与vector内部结构又完全不相同,vector内部是一个简单数组,如果需要更大的空间则重新分配内存,然后拷贝过去。deque原创 2016-12-15 13:33:33 · 1858 阅读 · 0 评论 -
C++ STL queue介绍与使用方法
queue(队列)队列也是一种逻辑数据结构,其具有先进先出的特性,针对这种特性,可以实现一些较为复杂的逻辑。在实际应用中,部分程序也正需要这样一种顺序进出的数据处理方式。使用这样的逻辑处理方式,使得我们可以将更多精力放在如何处理顺序逻辑之外的事情,对于编程、开发来讲,提供了极大的方便。 同stack类似,queue也可以看成是容器的容器,内部是使用其它容器来存放具体数据。加了一个外壳,使得我们的原创 2016-12-15 13:32:53 · 13319 阅读 · 0 评论 -
C++ STL stack介绍与使用方法
stack(栈)在学习数据结构中我们知道,栈是一种逻辑数据结构,其具有后进先出的特性。同时,我们也可以把它想象成一个容器,一个真实容器,添加与删除只能在容器顶部完成。栈的应用非常广,我们知道任何程序从内存进入CPU执行,系统为了保证程序正确的执行,将程序二进制代码存放在一个系统运行栈上面。调用函数A,则A的代码入栈,函数A中调用了函数B,则B入栈,B执行结束后,先出栈,这时再继续执行函数A。因此这种原创 2016-12-15 13:32:18 · 1900 阅读 · 2 评论 -
C++STL set介绍与使用方法
set(集合)set容器用来存储唯一元素,并且这些元素按照一定的规则排序。在一个集合里面,每个元素同时也是自身的关键字,与map相比,set的key与value是同一个值,所以每个元素必须是唯一的。同时,一旦某个元素插入到容器内,则不能修改其中任何元素,类比map,在map中也不能修改key。但set容器可以插入与删除。 set作为关联容器,与map一样,其内部数据结构为红黑树。 关原创 2016-12-15 13:31:33 · 1373 阅读 · 0 评论 -
C++STL map介绍与使用方法
map(映射)map是STL的一个关联容器,它提供一对一的数据处理能力(其中第一个可以成为关键字,且每个关键字只能在map出现一次,第二个可以称为该关键之的值),将关键字与该关键字的值组合在一起进行存储。由于具有一对一的特性,它能够完成我们处理一对一的数据时,在编程上提供快速通道。前面容器对比提到,map内部数据结构是红黑树(一种非严格意义上的平衡二叉树),这棵树具有对数据自动排序的功能,所以在ma原创 2016-12-15 13:30:56 · 1689 阅读 · 0 评论 -
C++STL bitset介绍与使用方法
bitsetbitset主要是用于存储二进制位,在需要大量二进制计算的项目中,直接使用bitset比利用数组或者其它方式要更为方便,位运算在存储状态、模拟行动、搜索很多方面有非常巨大的优势头文件:#include 构造函数bitset<16> first; //构造一个16位的bitset对象,初始值默认为0bitset<16> second(177); //构造一个16位的bitset对象,原创 2016-12-15 13:30:06 · 1573 阅读 · 0 评论 -
C++STL vector介绍与使用方法
vector(向量)在前面对比分析里面提到,vector内部数据结构是动态数组,也即顺序表,因此vector拥有访问数据快的优点, 但同时也有插入、删除效率低的缺点。同时,由于是动态数组,因此不需要考虑数据大小的问题,一旦vector内存空间不足,会自动重新分配内存,然后将数据拷贝到新的内存空间。 vector也是最为常用的序列容器,完全可以替换数组来使用,这样在编程过程中也会减少很多错误,同时原创 2016-12-15 13:29:18 · 843 阅读 · 0 评论 -
C++ string类介绍与使用方法
string(字符串)在程序设计过程中,字符串使用非常频繁,在C语言里面,所有字符串处理均是基于字符数组,包括一系列字符串处理函数,均是作用与字符数组之上。但在使用数据的过程中,会出现很多问题,比如字符数组越界,内存分配,包括一些函数作用于数组之上都比较麻烦,因此在C++里面提供了专门处理字符串的类string。在使用string时,我们完全可以将其视为一个基本的数据类型。同时,前面容器对里面提到,原创 2016-12-15 13:28:38 · 902 阅读 · 0 评论 -
C++ STL容器部分对比分析
STL容器有如下分类: 1. 序列容器:vector, list, deque, string 2. 关联容器:set, multiset, map, multimap, hash_set, hash_map, hash_multiset, hash_multimap 3. 其它:stack, queue, bitset序列容器对比string类原创 2016-12-15 13:27:58 · 1110 阅读 · 0 评论 -
C++ 类的默认函数
用户自定义一个类,简单的可以看成是一个新的类型,与C++标准里面的数据类型使用差不多。但在面向对象编程中,我们知道任何一个对象必须要通过构造函数才能创建,以及可以将一个对象拷贝给另一个对象,将一个对象作为参数传递给一个函数等。C++默认函数一个没有任何成员函数的类,其至少有如下四个默认函数 默认构造函数默认拷贝构造函数默认“=”运算符重载函数析构函数 既然是默认函数,那也就是说即便类里面原创 2016-12-19 16:24:05 · 1716 阅读 · 0 评论