香飘叶子
模版类就是类模版实例化之后的类,友元就是一种对函数访问权限的控制,通过将函数设为友元函数让其能够访问其他外部函数不能访问的"private"成员变量。 接着我们介绍一个他们结合在一起会产生什么样的结果,他们的结合分为三种情况:
什么是运算符重载? 顾名思义就是将原本的操作符以我们的方式定义出来,方便我们使用。为什么要进行运算符重载? 简单的理由就是将减少程序员的工作量,首先先看一个简单的例子:class A{ public: A(int 
深入理解struct 在C语言中,我们通常使用struct来表示不同数据类型的结合。当然我们也可以在struct中定义函数,在C++中,这是允许的但是不提倡使用,因为有一个比它更好使用的复杂数据类型,叫做类(这在稍后做出介绍)。 使用struct的时候有一个问题:在进行一个比较大的项目工程的时候,我们的数据结构的定义和使用可能在不同的文件中,当我们修改了数据结构中
该脚本根据使用者给出的扩展名生成不同程序的框架,这大大节省了我们在编程过程中的重复输入基本框架的时间。 #!/bin/bash declare -i cc_flag=0,c_flag=0,sh_flag=0 function main { if [ $# 
该脚本文件主要根据程序的扩展名来确定该程序属于C程序还是C++程序,然后根据不同情况,使用gcc或者g++编译器编译该程序。 #!/bin/bash # ===================================== # Author :&nbs
实现过程分析:我们回忆一下,在我们小时候刚接触多位数的乘法,我们的数学老师会教给我们一个方法,那就是“乘法的竖式计算”。在这里我们就采用该思想解决大数乘法的问题。 以下是我们经常进行乘法的竖式运算:根据以上的竖式运算,我们实现过程总结如下:1、先使用两个字符数组保存两个大数据;2、用第一个数据的个位与第二
第一步:POST(Power On Safe Test)加电自检 当按下电源键以后,CPU因为有电流通过便开始对自身、I/O设备、内存等硬件进行检验。那么CPU如何得知这些自检指令?我们知道指令存在于内存当中,寻找内存也需要指令。这看起来似乎是一个“死结”。如何解决呢?在CPU生厂商生产CPU的时候会给CPU内置一系列指令,让CPU通电以后就在
原理 当采用纯归并方法对数组进行排序时,将数组进行划分,直到每个数组只剩下一个数字时,就停止划分;接着,对划分好的数组两两进行归并操作;直到所有的队列都归并完毕,归并排序就完成。改进归并排序大多和其他排序,比如:快速排序和插入排序一同使用。即,当归并的过程讲数组划分到一定程度的时候,采用快速排序或者插入排序,对每一个数据段进行排序,然后将排序好的数组归
原理将排序数组分成若干个子序列(这个取决于最初设定的步长值),然后对各个子序列之间进行直接插入排序,最后再缩小增量(即步长值)再进行插入排序,直到序列顺序基本稳定(步长足够小)时,对这种序列进行一次直接插入排序,在排序状况较好时,直接插入排序的效率还是挺高的。分析 在最坏的情况下,每个数字在每次比较的过程总都会被比较一次,所以在最坏的情况下其时间复杂度O(n2)。
原理采用分治的思想。主要分为三步:第一步,选择一个基数。第二步,将排序数组在分区的过程,将比该基数小的放在左边,比该基数大的放在右边。第三步,对左右分区执行同样的操作直到剩下一个数字。分析在最坏的情况下,也就是数据的划分不平衡,一部分是n-1个数字,另一部分没有数据,并且每次划分都是这种情况,则其时间复杂度就是O(n2);在一般情况(包括最好),其时间复杂度为O(nlog2n);由于以下实现过程在
原理每次从数组中选取最小的数字放在第一个位置,直到数组最后一个位置也被放上合适的数字。分析由于每次选择最小的数字过程中,每个数字都会被遍历一次,总共会选择n(n为数组长度)次,所以其最好和最坏情况下的时间复杂度都是O(n2);由于其选择交换操作都是在原数组上进行,所以空间复杂度为O(1)。C语言实现void swap(void *a, void *b,&nb
原理默认数组的第一个数据是有个有序数组,由于只有一个数据,肯定是有序队列。从乱序数组的第二个位置开始,与之前的有序数组中的数据依次作比较,找到合适的位置将该数据插入有序数组,直到将最后一个数据插入有序数组中,排序结束。 分析由于在最坏的情况下,有序数组中的数据在每次插入操作时,都会被比较一次,所以在最坏的情况下,该排序算法的时间复杂度为O(n2);在最好的情况下,数据基本
原理 其原理是从乱序数组中的第一个位置的数据开始,让其与相邻的数字比较,如果相邻数字比该数字小(或大,这根据你想要升序结果还是降序结果决定),就交换两个位置,依次向后比较交换,知道数组最后。一轮结束以后,最大(或最小)的数字会被放在最后一个位置,再重复上述冒泡过程一轮,则第二大(或小)数字被放在了倒数第二个位置,这样反复进行n次(n表示数组的长度),冒泡排序过
基础了解在一个比较大型的项目中,所有的文件不可能全部编辑于一个文件中。常常会将源码存放于多个文件中,便于日后维护和管理,故编译安装起来就不那么容易。在项目完成之后,项目的发布者通常会进行如下操作:1、autoconf:会生成configure文件。 该文件主要用于检查编译环境是否满足编译需求,并定义启用哪些功能或特性
基础概念yum是一个基于C/S架构的软件包的前端管理工具。它是基于rpm包管理的封装,解决了rpm包安装过程中的依赖关系的问题。yum的server端: 其实质是一个文件服务器,主要功能: 1、利用yum的文件共享机制,将各个rpm包共享给客户端使用。 &nbs
基础了解软件包,顾名思义就是由多个软件组成的软件包。软件包的组成主要有四大部分: 1、二进制程序。主要存在与系统的/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin. 2、库文件。存在于/lib, /lib64, /usr/l
一、LVM简单介绍:LVM(Logical Volume Manager):逻辑卷管理,它主要用于在逻辑层面上,将多个存储设备组织成一个存储设备进行使用。与raid不同的是,LVM支持在线扩展和缩减,同时,LVM支持快照。LVM机制:在内核空间,将多个存储设备PV(Physical Volume)组织在一起形成逻辑层面的VG(Volume Group),在V
概念:RAID(Redundant Array Independent Disk)独立磁盘冗余阵列。当时为了使用廉价的性能比较差的小容量磁盘代替昂贵的性能较好的大容量磁盘,在1987年美国加州大学伯克利分校,就创造出了RAID阵列,其主要工作机制是将多个小容量磁盘组织成一个大容量的磁盘进行使用。RAID常见的level:RAID0: RAID0
一、基础概念文件系统是一种管理存储设备上所存储的文件的一种内生性软件。能与硬件的存储设备进行交互的只有内核。在操作系统还没有启动的时候,内核也没有启动,由于内核必须依靠文件系统才能启动。然而文件系统由存放于内核中,内核启动前文件系统不存在。这样环绕的问题,类似一个“鸡生蛋,蛋生鸡”的问题。其实,在操作系统启动时,MBR中的Bootloader会自动识别根文件系统(/),随之根文件系统中的内核便会启
定义:grep :Global search Regular Expression and Print out the line.egrep :Extend Global search Regular Expression and Print&nbs
定义:我们先来看看《算法导论》中的红黑树的定义:“红黑树是许多‘平衡’搜索树的一种,可以保证在最坏的情况下基本动态集合操作的时间复杂度为O(lgn)。” 性质:红黑树的性质如下:1、每个节点是红色的,或者是黑色的。2、根节点和叶子节点是黑色的。3、如果一个节点是红色的,那么它的父节点和子节点必须是黑色的。4、对于每一个节点来说,从该节点到叶子节点的简单路径上,所包含的黑色节点的数量必须一
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号