自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 stl源码简析char_traits.h

stl源码简析char_traits.h掠过之前不重要的东西,直接上代码了 static void assign(char_type& __c1, const char_type& __c2) { __c1 = __c2; } static bool eq(const _CharT& __c1, const _CharT& __c2) { return __c1 == __c2; }

2017-03-28 08:56:50 921

原创 动态链接库与静态链接库的区别

动态链接库与静态链接库的区别1 静态链接库的优点(1) 代码装载速度快,执行速度略比动态链接库快; (2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。 2 动态链接库的优点 (1) 更加节省内存并减少页面交换; (2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返

2017-03-27 15:27:51 826

原创 深度探索c++对象模型读书笔记(一)

深度探索c++对象模型读书笔记(一)1.c++有两种class data menmbers:static 和 nonstatic 三种class menmber functions:static ,nonstatic,virtual2.简单对象模型 每一个member data和member function都由一个指针指向它对象中只存放指针3.表格驱动的对象模型class A{ void*

2017-03-27 15:16:19 768

原创 c++stl vector源码简析

c++stl vector源码简析vector是我们经常用的容易之一,我们现在来简单看一下vector的部分源码理解vector的行为以便我们在使用过程中更得心应手首先看一下vector的alloc基类:template <class _Tp, class _Allocator, bool _IsStatic>class _Vector_alloc_base {public: typedef

2017-03-26 13:46:35 1331

原创 C++线程安全的单例模式

C++线程安全的单例模式首先看一下普通的单例模式实现:class singleton{ public: static singleton* getinstance(){ if(p==null){ p = new singleton(); } return p; } protect: singleton

2017-03-25 21:15:04 444

原创 关于c++中的cin

关于c++中的cin在程序中我们经常看到关于cin这样的用法while(!cin>>val) { ……; }我一开始想知道cin的返回值是什么于是就在网上去搜集资料,后面突然想到cin是istream一个对象,不是一个函数 也就没有什么返回值具体的继承是这样的:接下来我们找到 发现这是一个重载过的运算符点进去看一下如果没有结束符或者输入成功就返回true,否则返回false并且这是

2017-03-25 10:42:47 410

原创 Linux并发回射服务器(二):处理僵死进程

运行三个客户端程序然后非正常结束linux下我们用ps -a命令可以查看当前进程的情况如下解决方法是利用子进程传递给父进程的信号 代码如下:#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#in

2017-03-21 17:59:22 545

原创 Linux回射服务器(一):多进程实现并发

建立连接后创建一个进程来处理每个连接 使用fork()函数创建子进程 服务器端:#include<sys/types.h>#include<sys/socket.h>#include<stdio.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#include<string.h>#include<stdl

2017-03-21 17:34:00 926

原创 几种动态分配内存的方法及区别

1) malloc 函数: void *malloc(unsigned int size) 在内存的动态分配区域中分配一个长度为size的连续空间,如果分配成功,则返回所分配内存空间的首地址,否则返回NULL,申请的内存不会进行初始化。 2)calloc 函数: void *calloc(unsigned int num, unsigned int size) 按照所给的数

2016-04-21 19:48:19 2406

原创 static_cast 的用法

static_cast < type-id > ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法: ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。 进行上行转换(把派生类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态

2016-04-21 10:21:08 1014

原创 指针运算

1.指针自增、自减每次移动的偏移量是指针所指向对象的字节大小2.指针相减的值是指针地址的偏移除以指针每次移位的大小 举例:#include<stdio.h>void main(){ short *p,*q; short arr[15]={0}; p=q=arr; p++; printf("%d,",p-q); printf("%d,",(char

2016-04-19 17:17:31 527

原创 缺省参数

缺省参数是静态绑定的。所以,永远记住: 绝不重新定义继承而来的缺省参数举例:class A{public: virtual void func(int val = 1) { std::cout<<"A->"<<val <<std::endl;} virtual void test() { func();}};class B : public A{publ

2016-04-19 16:45:29 534

原创 多态分类

1.参数多态包括函数模板和类模板2.包含多态 virtualclass A{ virtual void foo() { printf("A virtual void foo()"); }};class B : public A { void foo() { printf("B void foo()"

2016-04-17 10:00:09 480

原创 c++多重继承的内存分布

观察下面一段代码:class ClassA{public: virtual ~ ClassA(){}; virtual void FunctionA(){};};class ClassB{public: virtual void FunctionB(){};};class ClassC : public ClassA,public ClassB{ pu

2016-04-16 10:02:29 1606

原创 c语言中的未定义行为

下列 C 代码中,不属于未定义行为的有_A.Int i=0;i=(i++); B.char *p=”hello”;p[1]=’E’; C.char *p=”hello”;char ch=*p++; D.int i=0;printf(“%d%d\n”,i++,i–); E.都是未定义行为 F.都不是未定义行为正确答案: C A,D:表达式的先后顺序,是由编译器决定的,有可能不同 B:常

2016-04-14 08:56:28 4544

原创 c++默认类型转化

以下代码执行后,val的值是_:unsigned long val = 0;char a = 0x48;char b = 0x52;val = b << 8 | a;正确答案: B A.20992 B.21064 C.72 D.0答案解析: 这里面涉及到了默认类型转换:当出现在表达式里时,有符号和无符号的char和short都会被自动转换为int类型,在需要的情况下,将自动转换为un

2016-04-14 08:49:54 653

原创 字符串&malloc&strlen&strcpy

如下程序用于输出“Welcome to Huawei Test”,请指出其中的两处错误。char * GetWelcome(void){ char * pcWelcome; char * pcNewWelcome; pcWelcome="Welcome to Huawei Test"; pcNewWelcome=(char *)malloc(strlen(pcWelc

2016-04-12 16:57:40 1708

原创 继承虚函数&数组名做参数

#include<iostream>using namespace std;class Base{public: virtual int foo(int x) { return x * 10; } int foo(char x[14]) { return sizeof(x) + 10; }};class Deriv

2016-04-12 16:53:51 453

原创 组合与继承

有这样一个类:class Eye{ public: void Look(void);};现在希望定义一个Head类,也想实现Look的功能,应该使用()方法,实现代码重用。 正确答案: BA.继承 B.组合 C.模板 D.过滤答案解析: 组合是在新类中以原有类的对象作为数据成员,继承是在不改变现有的类的基础上,采用现有类的形式并在其中添加新代码,组合一般用于在新类中使用

2016-04-12 16:45:58 399

原创 构建乘积数组

题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。 思路: 类似于动态规划 用两个数组保存 v1中v1[i]保存前i-1个数的乘积 v1[0]=1 然后从前往后遍历v[i]=v[i-1]*A[i] v2中v2[i]保存后面i+1到n个数的乘积 v2[

2016-04-10 13:08:53 349

原创 正则表达式匹配

题目描述请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配思路:用两个指针分别指向字符串和匹配串 如果能够匹配指针后移 不能匹配的情况比较复杂 要考虑有没

2016-04-10 13:02:19 513

原创 表示数值的字符串

题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。思路:简单的判断class Solution {public: string s; int flag=0; bool i

2016-04-10 12:55:42 434

原创 第一个只出现一次的字符位置

题目描述在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。位置索引从0开始 思路: 依次遍历字符串 如果c[100]没有这个字符就把这个字符加入到c[100]中并且count中对应++; 如果c[100]中存在这个字符 则返回下标class Solution {public: int FirstNotRepeati

2016-04-10 12:52:29 377

原创 继承类的大小

在32位操作系统gcc编译器环境下,下面程序的运行结果为()#include <iostream> using namespace std; class A { public: int b; char c; virtual void print() { cout << "this is father’s fuction! " << endl;

2016-04-08 11:21:48 1260

原创 数组名作为函数的参数传递给函数

在32位机器中,如下代码:void example(char acWelcome[]){ printf("%d",sizeof(acWelcome)); return;}void main(){ char acWelcome[]="Welcome to Huawei Test"; example(acWelcome); return;}的输出是?

2016-04-08 11:16:14 1280

原创 math.h的abs返回值()

math.h的abs返回值() 正确答案: C 你的答案: A (错误)A.不可能是负数 B.不可能是正数 C.都有可能 D.不可能是0c中的函数申明为 int abs(int num); 正常情况下, num为0或正数时,函数返回num值; 当num为负数且不是最小的负数时(不要问我最小的int类型负数是多少,上面那个图里面有真相),函数返回num的对应绝对值数,即将内存中该二进

2016-04-08 11:11:47 4464

原创 最短路径的实现

下面是一个带权值的连通图,就用这个图为例子来实现最短路径原理就不在说了 百度上面有 直接从代码开始首先定义头文件和需要的数据map表示带权值的连通图path[i]表示从起点到i路径上所有的顶点 如经过j顶点,则path[i][起点],path[i][j],path[i][i]都为1其余的都为0dis表示从起点到每个顶点的最短路径find表示是否找到起点到其他节点的最短路

2015-10-30 11:27:29 474

原创 对稀疏矩阵压缩后转置

#include#include//define struct Arr{ int i,j; int data;};struct ST{ Arr* data; int i,j,num;};//矩阵压缩 ST* change(int arr[][3],int x,int y){ ST *M; int i,j; int count=0; M=(ST*)mallo

2015-10-29 19:57:42 400

原创 用栈实现括号匹配

输入左括号如'(','['则进栈 右括号如')',']'则从栈里取出一个括号 看着两个括号是否匹配#include#include#define SIZE 6//define the struct of stacktypedef struct stack{ char* element; int top; int size;}Stack;//initialize stack

2015-10-29 19:54:54 623

原创 静态链表的实现

#include#include#define SIZE 6//define struct of static listtypedef struct stlist{ int* content; int* next; int* exist;} StList;StList* initList(StList* tempPtr){ int i; //allocation sp

2015-10-29 19:11:13 961

空空如也

空空如也

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

TA关注的人

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