C/C++
文章平均质量分 75
Zip Zou
专注于变强和变秃
展开
-
C/C++程序的内存区域划分
很多刚接触C/C++的朋友,很难深入的理解指针,以及内存管理的特性。 与基于.NET 的托管C++和JAVA不同的是,C/C++将内存管理的过程,都交给了程序员,虽然这给编码带来了更加复杂的一个过程,但是直接操作内存,具有极高的执行效率。然而,与此同时,带来的也是各种安全隐患。如我们使用数组时经常出现的数组越界问题,指针被“野”掉的问题。原创 2016-01-01 21:05:37 · 753 阅读 · 1 评论 -
谈C++内存管理与智能指针
谈及C/C++令人头疼的就是指针和内存管理了,可怕的内存泄漏,繁琐的内存管理。好在C98提供了标准支持了C++的一个模板类auto_ptr,还有C++11对auto_ptr的摒弃,以及boost库提供的一系列scoped_ptr,shared_ptr,weak_ptr,unique_ptr等智能指针,貌似都对C++的内存管理提出了解决方案,还专门有scoped_array等来管理动态数组,对C++原创 2015-12-07 10:52:06 · 891 阅读 · 0 评论 -
C语言实现双向链表
使用双向链表实现,双向链表具有的单向链表所不具备的优势,那就是可以双向遍历,这对增、删操作的效率都有显著的提高。而弊端则是造成空间效率的下降,即需要额外的指针来维持双向链表之间的连接关系。链表的实现中,我们默认采用了两个哨兵节点,该两节点标识了整个链表的头部和尾部,但其数据域不存储具体数据。原创 2016-02-12 14:05:22 · 5732 阅读 · 0 评论 -
C++封装向量-线性表
封装前的考虑在C++中有很丰富的库,当属STL模板,STL的设计和优化都为我们提供了应有的功能。然而对于新手而言,尝试进行一个封装,会使得自己更加熟悉面向对象。面向对象三大特性:封装、继承、多态。这也是面向对对象语言相对面向过程而言,最大的优势和特点。面向对象使得程序更加利于维护,让设计人员更加关注设计,要想真正的理解面向对象的特性,则必须要清楚和掌握这三大规律。在C++中,STL提供了Vector原创 2016-07-03 16:32:57 · 2901 阅读 · 0 评论 -
C++封装链式表-链表
此文章为上一篇文章续篇 面向对象三大特性:封装、继承、多态。这也是面向对对象语言相对面向过程而言,最大的优势和特点。面向对象使得程序更加利于维护,让设计人员更加关注设计,要想真正的理解面向对象的特性,则必须要清楚和掌握这三大规律。链式结构分析对于链式结构而言,与线性结构有所差别的是,其逻辑结构不为连续的,而是采用一种前驱后继的方式进行节点之间的关联,使得上一个节点,可以访问到下一个节点,从而形原创 2016-07-03 19:53:45 · 2825 阅读 · 0 评论 -
C++封装栈
动手前的考虑对于栈而言,其实其本质仍然为线性结构,并没有产生本质的变化,因此其内部存储结构仍然可以选用之前两篇文章的存储结构进行存储。对于结构的考虑对于线性结构而言,其实是存在两种形式的,分别是:连续的向量式、不连续的链式结构。 而这两者结构,都有不同的优缺点,其中需要了解的是:向量式的更加适合于增删操作不频繁,而需要频繁随机访问元素的情形链式的则更加适合于增删操作频繁的情况,而对于链式结构的原创 2016-07-04 19:40:57 · 2372 阅读 · 0 评论 -
C++封装队列
对于队列的思考队列拥有的特性和栈相反,即:栈先进后出,队列先进先出。 而与栈相同的是,栈仍然也是线性的存储结构进行存储,而与栈相同的是,需要频繁的进行入队和出队,因此仍然可以采用栈的相同方式进行类似的实现。 详细参考:C++封装栈开始栈的封装//// ZQueue.hpp// Array//// Created by 邹智鹏 on 16/7/4.// Copyright © 2原创 2016-07-04 19:50:33 · 1534 阅读 · 0 评论