自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

susershine的专栏

市井小虾

  • 博客(21)
  • 收藏
  • 关注

原创 C++学习之模板

之前写过有关C++模板的内容,但是现在回头再看看书本,发现之前写的东西太肤浅了。考虑的问题太不全面了。因此在这里重写下有关C++模板的知识总结。为什么C++要引入模板这个概念呢?C++的发明者Bjarne Stroustrup曾这样说过:“这是为了支持类型安全、类容器的有效性和算法的通用性。”简单的来说,模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现真正

2013-11-30 17:42:52 865

原创 C++学习之多态

多态是C++中的三大特性之一。这里所说的多态指的是动态多态。具体地说,通过一个指向基类的指针调用虚成员函数的时候,运行时系统将能够根据指针所指向的实际对象调用恰当的成员函数实现。举个简单的例子:class A{ public: virtual void print() { cout<<”this is A::print()!”<<endl;}};class B:publi

2013-11-29 20:48:44 566

原创 结构体和类中的内存布局

通常我们访问结构体或类的成员变量,使用的是比较普通的方法。如定义一个structstruct A{ char a; int b; double c; void (*func) (A *);};那么我们访问结构体中的成员有两种方法:1)(结构体对象名) . (成员变量名);2) (结构体指针) -> (成员变量名)。由于任何变量都在内存中对应一个地址,我们是不是可以通过指针地

2013-11-29 10:24:55 1402 1

原创 C++学习之初步

本人学习C++有段时间了,但是对C++还是有些部分不是很了解。因此专门找了本讲解C++的书籍,边看边总结,希望能增加对C++的理解。该书的名字是《C++面向对象程序设计》,作者李晋江,刘培强。选择该书的原因是:它是一本面向教学的书籍,里面的知识讲解都很清晰明了。本人打算先增加下对C++的理解,再去拜读下那些权威名著。第一部分:C++语言初步1.    命名空间1). C++中的命名空间

2013-11-28 16:59:46 615

原创 二叉树遍历的递归和非递归实现

一、二叉树的先序遍历:首先访问跟节点,再依次访问它的左子树和右子树。递归方法:void preorder(node *root){ if(NULL == root) return ; visit(root); preorder(root->leftchild); preorder(root->rightchild);} 其非递归算法,利用C++STL中的sta

2013-11-24 23:45:14 589

原创 几个简单的字符串和数组计算方法

1.        给定一个递增数组和一个数字S,在数组中找到两个数使得它们之和正好是S。思路:设定该数组的首尾的下标begin和end,当begin#include using namespace std;int arr[100];int main(){ int n =0,i; cin>>n; int begin = 0; int end =

2013-11-24 21:17:45 988

转载 编程技术面试的五大要点

扎实的基础知识、高质量的代码、清晰的思路、优化代码的能力、优秀的综合能力是编程技术面试的五大要点。找工作一直是一个热门话题。要想找到心仪的工作,难免需要经过多轮面试。编程面试是程序员面试过程中最为重要的一个环节。如果能在编程面试的环节充分展示自己的能力,那么拿到中意的Offer就是水到渠成的事情。我先后在欧特克、微软和思科等公司任软件工程师,多次接受他人的面试,同时也面试过很多人。

2013-11-24 15:22:35 535

原创 位运算实现加减法

首先实现加运算,实现加运算自然就可以实现减运算了。位运算是对二进制进行的操作,两个二进制数相加,如果同位都是1,则产生进位。如果同位都不是1,则不产生进位。1).不考虑进位的情况,两个二进制数相加就是求异或的操作。即对于5+9等价于00101 + 01001;两者异或结果为01100(异或结果);2).考虑进位如何操作,同上述情况一样,5+9会在末尾位产生进位,那么我们对两者求与操作,

2013-11-23 16:35:19 3795

原创 BFS

BFS是广度优先搜索算法,是图的一种搜索算法,当然也可以用作其它的地方。BFS是一种盲目搜索算法,其目的是系统的展开并检查途中的节点。而且如果图是非加权的(各个边的长度相等),那么它找到的第一个解是距离根节点的边数目一定最少。但如果图是加权图,那么边数目最少并不代表路径最少,因此找到的解不一定是最佳解。而且BFS的空间复杂度是:O(V+E);时间复杂度是O(V+E);其中V是图中的节点数,V是图的

2013-11-23 11:17:03 758

原创 字符串四则运算求值

假定给定一个四则运算字符串:8+7*2 –9/3;那么该表达式的值为19. 但是如何用C/C++程序上实现计算一个字符串表达式呢?一个常用的做法是将表达式的字符串转换为后缀表达式,即:1)表达式8+2,转换为后缀表达式是8 2+;2)表达式8 +3*4,转换为后缀表达式是834*+;然后通过栈的操作可以求得它们的结果:以2)例为例:压入8,                    

2013-11-21 15:06:15 1394

原创 大端模式和小端模式

大端模式和小端模式是两个相对的概念。网络字节顺序使用的是大端模式,一般的电脑主机中的字节顺序使用的是小端模式,一些大型的IBM主机除外。从概念上讲:大端模式:高字节存放在低地址,低字节存放在高地址小端模式:高字节存放在高地址,低字节存放在低地址举个例子:一个数据0x12 34 56 78(代表的是一个16进制数据,16进制的两位表示一个字节),那么它在小端模式中的存储方式

2013-11-20 22:21:47 749

原创 进程间通信(二)

三、信号信号时linux中进程间的一种重要的通信方式。信号是在软件层次上对中断的一种模拟,也叫做软中断。信号是linux进程间通信机制中唯一的异步通信机制。信号通信机制包括信号的发送,信号的响应,信号的安装,信号集与信号集操作函数,以及信号的阻塞和未决。Linux中总共包括了64中信号,前32种信号是不可靠的信号(非实时信号:不支持排队);后32种是可靠地信号(即有效的解决了信号丢失的问题,且

2013-11-20 14:13:59 789

原创 有序的合并两个有序链表

输入两个递增链表,合并这两个链表中的元素,并保证合并后的链表中的节点仍然是递增排序的。首先定义一个节点的结构体:struct node{ int n_val; node *next; };其次实现递增单链表的输入:即输入一系列递增的数字,并使它们形成一个链表。知道遇到”-1“,停止输入。void create_list(node * &rhead){

2013-11-20 11:35:48 759

原创 进程间的通信(一)

进程间有很多的通信方式,包括:管道(pipe),命名管道(named pipe),信号(signal),消息(message)队列,共享内存,内存映射(mapped memory),信号量以及套接口(socket)。下面就逐一的介绍着几种通信方式。一、 管道管道是一种半双工的通信方式,用于具有亲缘关系的进程进行单方向的通信。linux用pipe函数创建一个管道,其函数原型为:#incl

2013-11-20 09:40:33 958

原创 const、 volatile 和mutable

const, volatile 和 mutable是C/C++中的三种类型限制付。三者具有不同的优点,不同的用途。下面就三者在不同方面的应用进行一个总结。一、const:在最初的C语言中const用来修饰变量和指针以及函数参数,但在C++中const的用途进一步被拓展。const更确切的解释应该是read only。1const 修饰变量:一般有两种写法:const type

2013-11-19 23:13:08 1125

原创 重载、隐藏、覆盖

一、       重载重载包括函数的重载和运算符的重载。函数重载是指在同一个作用域中,相同函数名字,不同参数或参数个数不同的函数可以实现重载。二、隐藏隐藏包括变量和函数的隐藏。函数的隐藏是指在不同作用域中,函数被下一级作用域中的同名函数隐藏,可以不具备相同的函数参数或参数个数。因为调用成员函数式要经过以下3步:1、  编译器查找函数名2、  从同名候选者中选择最佳匹配函数3

2013-11-19 23:08:09 739

原创 常见字符串问题总结(三)

常见字符串问题总结(二)字符串问题中经常会有删除某一字符串的某一个字符,可以是不同方式的删除,比如将指定的字符删除,删除字符中的空格(包括字符串的头和尾)。本文就列举了部分有关字符串删除的问题。1.  删除字符串中的空格,要求将字符串前面和后面的所有空格都删除,对字符串中间,如果出现多个连续的空格,只保留一个空格。#include #include using namespac

2013-11-16 18:02:26 654

原创 字符串常见问题总结(二)

寻找一个字符串中最长的公共子串思路:1.求出该字符串的所有后缀子串2.对这些后缀子串进行排序3.比较相邻的后缀子串,求出它们最大的公共子串的长度 /*实现如何求取字符串的所有后缀子串。可以定义一个指针数组,使每个指针分别指向字符串不同的位置。实现代码如下。*/#include #include #include using namespace std;ch

2013-11-15 20:35:58 533

原创 字符串常见问题总结(一)

字符串处理中的常见问题总结(一)C语言中字符串处理方面的问题非常普遍,常见问题如:查找,替换,复制,移动,插入,删除,排序,单词统计,字符串类型与其他类型(整形,实型,长整形)之间的相互转换等。一、           字符串的查找C语言库函数中有很多有关的函数,如:int strcpm(char * src, char*dest); int strncpm(char*,char*);

2013-11-15 15:51:55 869

原创 常用库函数的实现

常用库函数的实现:1.      strcmp() 实现不使用库函数,编写int strcmp(char *source, char * dest)若相等返回0,不等返回-1.int Mystrcmp_simple(char * src, char*dest){ assert(src!=NULL && dest!=NULL); while(*(src++) ==

2013-11-14 14:43:35 512

原创 可变参数函数

可变参数函数可变参数函数的参数是可变的,例如printf(char* formt, va_list args)和 vfprintf(FILE* fp, char *format, va_list args)等。实现可变参数函数要在头文件中包含,其中包含了四个操作可变参数的函数。void va_start(va_list ap, argN); // 初始化va_list 类型的参数apvo

2013-11-13 19:37:07 1033

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除