
STL
_刘小雨
一枚普通而~~~
展开
-
C++ Set用法
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树高度相等。平衡二叉检索树使用中序遍历算法,检索效率高于vector、deque和list等容器,另外使用中序遍历可将键值按照从小到大遍历出来。构造set集合主要目的是为...转载 2018-06-04 09:40:55 · 624 阅读 · 0 评论 -
C++STL03---Vector容器
1.动态数组,可变数组,是一个连续的内存空间2.vector容器,称为单口容器3.实现动态增长:当插入新元素的时候,如果空间不足,那么vector会重新申请更大的一块内存空间,将原来空间数据拷贝到新空间,释放旧空间的数据,在把新元素插入新申请的空间里。问:reserve和resize的区别?答:reserve是容器预留的空间,但在空间内不是真正创建元素对象,所以在没有添加新的对象之...原创 2019-03-23 21:10:30 · 151 阅读 · 0 评论 -
STL中的常见的查找算法
其实里面查找算法用多了就熟悉了,现在来了解一下。#include<iostream>#include<algorithm>#include<vector>using namespace std;//常用的查找算法void test01(){ vector<int> v; for (int i = 0; i < 10; ...原创 2019-03-26 18:17:17 · 355 阅读 · 0 评论 -
C++STL10---函数对象的概念
函数对象:1.就是一个类,重载的()操作符,2.函数对象可以像普通函数一样被调用3.函数对象可以像普通函数那样接收参数4.函数对象超出了函数的概念,函数对象可以保存函数调用的状态5.一元仿函数就是指有一个参数;二元就是两个参数谓词:谓词是指普通函数或重载的 operator()返回值是 bool 类型的函数对象(仿函数)。如果operator 接受一个参数,那么叫做...原创 2019-03-26 18:11:27 · 222 阅读 · 0 评论 -
C++STL09---深拷贝和浅拷贝的问题
首先我们了解一下STL里面的容器共性机制:STL容器共性机制STL容器所提供的都是值(value)寓意,而非引用(reference)寓意,也就是说当我们给容器中插入元素的时候,容器内部实施了拷贝动作,将我们要插入的元素在另行拷贝一份放入到容器中,而不是将原数据直接放入到容器中,也就是说我们提供的元素必须能够被拷贝(自己写的指针的话,就需要自己写一个拷贝构造函数)。 1.除了Qu...原创 2019-03-26 18:08:39 · 604 阅读 · 0 评论 -
C++STL02---String容器
String容器总结:1.Char* 是一个指针,String是一个类2.String封装了char*,管理这个字符串,是char*型的容器3.封转了很多成员方法 find、copy、delete、replace、insert4.不用考虑内存释放和越界的问题以下为学习代码:#include<iostream>#include<string> ...原创 2019-03-22 19:28:24 · 101 阅读 · 0 评论 -
C++STL01---算法、容器、迭代器的认识
STL是学习C++不可逾越的一道沟,之前就一直想学习来着,只怪自己太懒,而且自己也一直苦于不知道从哪里下手,一个人慢慢的摸索到现在,今天终于有时间记录自己学习的过程。STL包括算法,容器,迭代器1.算法: 通过有限的步骤解决问题。2.容器:序列式容器(容器的元素位置是由进入容器的时机和地点决定的)和关联式容器(容器已经有规则,进入容器的元素位置不是由时机和地点决定的)3.迭代器:用...原创 2019-03-22 18:25:47 · 244 阅读 · 0 评论 -
C++STL08---map/multimap容器
前面有关二叉树的介绍,我在这就不多说了。Map/multimap容器1.里面所有元素都是pair(对组),同时拥有实值和键值,pair的第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值;multimap允许相同的key值。2.和set一样不能通过迭代器改变map的键值,但是可以修改元素的实值。3.也是以红黑树为底层实现机制的。根据键值排序的。下面直...原创 2019-03-25 20:22:04 · 192 阅读 · 0 评论 -
C++STL07---Set/multiset容器
说道set/multiset容器,就不得不说二叉树了。二叉树:二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。平衡二叉树:又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉...原创 2019-03-25 20:17:00 · 351 阅读 · 0 评论 -
C++STL06---list容器
1.链表是由一系列的结点组成,结点包含两个域,一个数据域,一个指针域。2.链表内存是非连续的内存。添加删除元素,时间复杂度都是常数项,不需要移动元素,比数组添加删除元素效率高3.链表是不是只有在需要的时候,才分配内存?4.链表只要拿到第一个元素就相当于拿到整个链表了。5.链表需要额外的空间保存节点的关系,前驱 后继关系。6.list中的sort和算法中的sort区别: ...原创 2019-03-24 20:03:22 · 134 阅读 · 0 评论 -
C++STL05---stack容器和queue容器
stack容器1.先进后出2.压栈--push()3.出栈--pop()4.取栈顶元素--top()5.不提供迭代器---不能遍历,不支持随机存储访问的话,下面给出遍历的例子While(!stack.empty()){ Cout<<stack.top()<<endl; Stack.pop();}queue容器1.一端插入另一端删除...原创 2019-03-24 19:59:03 · 177 阅读 · 0 评论 -
C++STL04---deque容器
1.是个双向队列2.支持遍历,迭代器3.支持随机访问,在两边插入效率比较高4.是一个分段连续的内存空间//deque: 双向队列#include<iostream>#include<deque>#include<string> //字符串头文件#include<vector>#include<algorithm>...原创 2019-03-23 21:12:51 · 166 阅读 · 0 评论