
数据结构
文章平均质量分 68
小白起步
每天都要学到新东西
展开
-
单链表的使用
封装的单链表方法typedef struct ListNode{ ListNode *next; int data;}node;class list{public: list(); ~list(); //构造节点时使用尾插法 void CreatNode(int *arr, int n)const; bool IsEmpty()cons原创 2017-05-20 17:00:20 · 257 阅读 · 0 评论 -
双向链表
双向链表的操作与单链表的基本相似typedef struct DoublyListNode{ int data; DoublyListNode *prev; DoublyListNode *next;}Node;class DoublyList{public: DoublyList(); ~DoublyList(); void CreateN原创 2017-05-20 18:52:22 · 245 阅读 · 0 评论 -
从零开始,打造自己的STL(二、vector)
vector的内存布局以及操作方式与array非常的类似,都是一段连续的内存空间。两者之间唯一的差距就是空间运用的灵活性。array的空间在配置好了之后就无法更改,它所存放的数据量是固定的,一但空间不够用之后需要重新配置一块更大的空间。vector则不然,它的内存空间会随着元素的加入自动扩充新的空间供给使用,这样使用起来就不需要担心空间是否够用了。vector的内存结构vector采用了连续内存空间原创 2018-04-23 15:24:45 · 434 阅读 · 0 评论 -
从零开始,打造自己的STL(三、alloc)
简述在stl中,所有的内存分配与释放都是交由allocator来实现的。在大部分情况下,我们都接触不到这里面的内容,因为它一直是隐藏在幕后悄悄的工作。 当然如果对于内存分配有特殊的要求的话,STL也提供了接口供我们使用自己的分配器 比如在vector的定义上template <typename _Tp, typename _Alloc = alloc >class vector : prote原创 2018-04-23 15:26:24 · 753 阅读 · 0 评论 -
从零开始,打造自己的STL(四、list)
简述在前面我们看了vector的实现之后相信对容器有了一定的认识。容器即为存放物件之所,它代表着一块空间。想要直观的了解一个容器,那么看懂他的空间分配策略是一个非常有效的入手方式。接下来我们就来看看STL中的list又是如何实现的吧。list的结构list就是我们常说的链表,说到链表相信大家就很熟悉了。非连续空间、通过指针来连接每一个小空间、插入和删除都是O(1)操作,元素访问效率较低等等。。。原创 2018-04-23 15:27:49 · 383 阅读 · 0 评论 -
exec
exec在linux的bash shell中,执行外部命令时,该shell会fork一个子进程,这个子进程调用exec从磁盘上加载外部命令对应的程序。这是exec的一个应用。通过它的应用来看原理exec会把一个可执行文件的绝对路径作为参数,把当前正在运行的用户进程的进程体用该可执行文件的进程体替换,从而实现新进程的执行,而进程的pid是不变的。可以这样认为,exec并没有创建新的进程,只是...原创 2018-05-19 17:40:24 · 1774 阅读 · 0 评论