c/c++
逐梦如风
这个作者很懒,什么都没留下…
展开
-
struct结构的内存对齐
struct结构的内存对齐内存对齐的主要作用是:1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性能原因:经过内存对齐后,CPU的内存访问速度大大提升。内存对齐的意义,cpu读取内存数据不是一个个读取,是一片片读取,而且都是2的倍数2,4,,8,16,如果内存不对齐,比如只读了后台的5原创 2016-10-12 18:04:43 · 914 阅读 · 0 评论 -
cpp的stl的队列和栈
cpp的stl的队列和栈stl的queue和stack除了第二个参数,可以指定采用哪个集合存储数据,其他的看代码即可了解//// main.cpp// use_stack_queue//// Created by bikang on 16/11/1.// Copyright (c) 2016年 bikang. All rights reserved.//#include <ios原创 2016-11-01 15:06:13 · 2272 阅读 · 0 评论 -
cpp的STL算法
cpp的STL算法什么是stl算法操作stl集合的一堆方法。很方便,他们就是一堆工具。你只要熟悉stl就可以很方便的使用他们啦。先明白算法有哪些,有什么作用,然后熟悉一部分常用的,其他的在实践中时候用stl算法的分类非变序算法计数算法 count,count_if搜索算法 search,seach_n find,find_if,find_end,find_first_of,原创 2016-11-01 14:28:47 · 1777 阅读 · 0 评论 -
cpp的函数对象和谓词
cpp的函数对象什么是函数对象将函数对象作为谓词如何使用函数对象实现一元和二元谓词函数对象和谓词的定义函数对象用作函数的对象,实际上是指实现了operator的类的对象函数和函数指针也是对象,但是只有实现了operator的类的对象才能保持状态,才能用于STL算法一元函数接受一个参数的函数一元谓词接受一个参数的函数,而且返回bool类型i二元函数接受二个参数的函数二元谓词接受二个参数的函数原创 2016-10-31 12:05:39 · 622 阅读 · 0 评论 -
高级io函数与服务器程序规范
高级io函数单向管道实现管道pipe(int fd[2]) fd[0]读 fd[1]写双向管道基本本地的,前三个参数和socket一模一样 socketpair(int domain,int type, int protocol,int fd[2])dup函数和dup2函数dup(fd) 复制一个新的描述符,和原来的一样,总是取得当前系统可用的最小值dup(int fd1,int fd2) 同原创 2016-11-10 15:42:01 · 560 阅读 · 0 评论 -
推荐cpp的shared_ptr和auto_ptr的文章
cpp的shared_ptr和auto_ptr的文章http://blog.csdn.net/u013696062/article/details/39665247http://blog.csdn.net/u013696062/article/details/39477571转载 2016-11-09 16:26:20 · 516 阅读 · 0 评论 -
cpp的STL之map
cpp的STL之mapmap/multimap map key-value存储,可以理解为关联数组或者字典multimap 运行一个key存储多个值使用//// main.cpp// use_stl_map//// Created by bikang on 16/10/28.// Copyright (c) 2016年 bikang. All rights reserved.原创 2016-10-28 15:55:50 · 1249 阅读 · 0 评论 -
cpp的STL之set
cpp的STL之setset 唯一容器,已排好序的multiset可重复值的容器,已排好序的set和multiset的实例//// main.cpp// use_stl_set//// Created by bikang on 16/10/28.// Copyright (c) 2016年 bikang. All rights reserved.//#include <iostr原创 2016-10-28 14:36:55 · 1066 阅读 · 0 评论 -
cpp的STL之list
cpp的STL之list特点就是个双向链表基本操作//// main.cpp// use_stl_list//// Created by bikang on 16/10/28.// Copyright (c) 2016年 bikang. All rights reserved.//#include <iostream>#include <list>using namespac原创 2016-10-28 14:13:44 · 1015 阅读 · 0 评论 -
cpp的STL值vector和deque
cpp的STL值vector和dequevector的特点在末尾操作数据的时间固定插入数据的时间和数据插入前数据的个数成振臂存储的元素数是动态的,vector负责管理内存vector的操作void tvector(){ cout << "tvector" << endl; //实例化的方式。可以初始化大小 vector<int> vec1; cout <<"vec原创 2016-10-28 13:46:37 · 759 阅读 · 0 评论 -
cpp继承和多态
继承c++ 如果不写默认的私有继承继承的基础 继承的语法 class 派生类名:继承方式 基类名1, 继承方式 基类名2,...,继承方式 基类名n { 派生类成员声明; }; 支持多继承 继承后子类可以访问父类的非private方法和成员公有继承&私有继承&保护继承公有继承 当类的继承方式为公有继原创 2016-10-21 16:42:42 · 1094 阅读 · 0 评论 -
cpp的类
cpp的类访问的权限public/private/ptoctedpublic 任意用户都可以访问private 私用的protected 保护的数据类型构造函数(各种类型的构造函数)主要目的: 构造函数提供了对象参数初始化的方法特点和其他语言类似。有参数的构造函数必须同时声明成员对象,父类的构造函数构造函数的顺序: 父类[按照声明顺序] 成员对象[按照声明顺序]原创 2016-10-21 14:34:59 · 1096 阅读 · 0 评论 -
cpp的STL之string
cpp的STL之string为什么需要string1 创建和操作方便2 不用关心内存分配问题3 不用考虑内存越界4 更加丰富的操作 stl string类stirng的基本操作复制,连接 ,查找字符,查找子串,截短使用模板算法实现反转,大小写转换使用这些常用的基本操作,大致就够了啊,其他的可以采用上面的方法组合起来得出结果//// main.cpp// use_stl_strin原创 2016-10-28 11:58:57 · 960 阅读 · 0 评论 -
cpp中的STL简介
cpp中的STL简介接下来打算详细学习下cpp中的STL,先来个简介。STL包括什么存储信息的容器访问存储信息的容器的迭代器操作容器内容的算法STL容器两种类型的容器顺序容器关联容器顺序容器vector 动态数组 dequeue 与vector一样,但允许头部插入list 链表关联容器set 排序排列的唯一值列表map key-val存储multiset 与set类似允许存储多个相同值的原创 2016-10-28 10:52:25 · 2340 阅读 · 0 评论 -
cpp中使用sizeof和计算类占用空间的大小
cpp中使用sizeof和计算类占用空间的大小cpp中的sizeof的特性cpp中sizeof的特性(0)sizeof是运算符,不是函数;(1)sizeof不能求得void类型的长度;(2)sizeof能求得void类型的指针的长度;(3)sizeof能求得静态分配内存的数组的长度!(4)sizeof不能求得动态分配的内存的大小!(5)sizeof不能对不完整的数组求长度;(6)当表达式原创 2016-10-27 18:06:03 · 2886 阅读 · 0 评论 -
cpp的stl的位标识
cpp的stl的位标识我们将使用bitset和vector,用他们表示位和位标识信息//// main.cpp// use_stl_bit//// Created by bikang on 16/11/1.// Copyright (c) 2016年 bikang. All rights reserved.//#include <iostream>#include <strin原创 2016-11-01 15:24:01 · 672 阅读 · 0 评论 -
cpp的智能指针
cpp的智能指针智能指针是利用了构造函数分配内存,利用析构函数自动掉的特性释放内存智能指针可以解决一些内存不释放的问题智能指针实现的例子template <typename T>class MySmartPointer {private: T *m_pointer;public: MySmartPointer(T *pdata):m_pointer(pdata){} ~M原创 2016-11-01 16:32:55 · 988 阅读 · 0 评论 -
创建守护进程
守护进程有如下几个概念 1 创建一个新的子进程 2 设置允许当前进程创建文件或者目录最大可操作的权限 3 设置新的进程组id 4 把根目录切换的指定的目录 5 关闭标准输入和输出#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/stat.h>int d原创 2017-10-29 20:06:18 · 303 阅读 · 0 评论 -
c语言的日志库
最近重新温习下c语言,在linux环境下写些小功能。做一个小项目项目的目标如下1 输出时间和日期,任意指定的字符串,记录文件名,行数2 支持输出各种级别的数据3 默认输出数据到终端4 支持输出日志到文件对于初次写c项目的人来说的难度。1 各种标准库2 理解这种模式,手动的分配内存,释放内存涉及到的…的替代方式 __VA_ARGS__变长数据的读取 va_start(arg原创 2017-10-29 19:40:37 · 3246 阅读 · 0 评论 -
mac 下的编辑器clion
mac下xcode做cpp开发用着不太顺手所以整了一个clion,都是收费的,参考如下链接使用破解clion,还不错http://www.sdifen.com/clion20162.html原创 2017-09-15 16:40:58 · 980 阅读 · 0 评论 -
cpp的友元函数
友元函数的简单介绍为什么要使用友元函数友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。具体场景实际上具体大概有下面两种情况需要使用友元函数:(1)运算符重载的某些场合需要使用友元。(2)两个类要共享数据的时候。使用友元函数的优缺点原创 2016-10-24 11:34:15 · 1327 阅读 · 0 评论 -
cpp编程惯用法--抽象
cpp编程惯用法学过cpp primer ,写过一些例子,还是容易迷失在文案的海洋里面。我觉得我已经成了一个用class写c的php程序员。还按照这个方法,完成了个项目,完成项目的过程中真是有点头大,不过写着写着渐渐的熟悉,回过头来发现两点1 需要对c++语法中常用的部分进行总结。2 需要懂得每个项目里面的内存模型,对象什么时候产生,做了什么事情,什么时候销毁3 需要更多的了解智能指针4 需要原创 2016-12-08 18:17:19 · 761 阅读 · 0 评论 -
linux poll和epoll
linux pool和epool简介函数简介poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。poll函原创 2016-12-12 14:54:14 · 673 阅读 · 0 评论 -
cpp的单例模式。
cpp的单例模式。禁止在外部使用,构造器,拷贝构造器,赋值重载在一些场合是很有用。//// main.cpp// singleData//// Created by bikang on 16/11/15.// Copyright (c) 2016年 bikang. All rights reserved.//#include <iostream>class SignalClass原创 2016-11-15 11:35:25 · 1564 阅读 · 0 评论 -
对于拷贝构造函数和赋值构造函数的理解
拷贝构造是确确实实构造一个新的对象,并给新对象的私有成员赋上参数对象的私有成员的值,新构造的对象和参数对象地址是不一样的,所以如果该类中有一个私有成员是指向堆中某一块内存,如果仅仅对该私有成员进行浅拷贝,那么会出现多个指针指向堆中同一块内存,这是会出现问题,如果那块内存被释放了,就会出现其他指针指向一块被释放的内存,出现未定义的值的问题,如果深拷贝,就不会出现问题,因为深拷贝,不会出现指向堆中同一块转载 2016-11-15 11:30:41 · 2559 阅读 · 0 评论 -
cpp的适配器模式
cpp的观察者模式//// main.cpp// adpatermodel//// Created by bikang on 16/11/16.// Copyright (c) 2016年 bikang. All rights reserved.//#include <iostream>#include <cstdlib>using namespace std;//以前只需要n原创 2016-11-16 10:39:31 · 721 阅读 · 0 评论 -
cpp的工厂模式
cpp的工厂模式//// main.cpp// factoryPartner//// Created by bikang on 16/11/18.// Copyright (c) 2016年 bikang. All rights reserved.//#include <iostream>using namespace std;class Produce{public:原创 2016-11-18 11:41:09 · 1103 阅读 · 0 评论 -
cpp的杂项
cpp的杂项杂项的bug和调试每一项都得专门去做,比较琐碎,所以罗列在这里。预处理器和编译器和c类似bug和调试断点监视点查看内存查看汇编代码预处理器和编译器#define#if define xxx#else#endif#ifndef xxx#define#endif字符串化 #define ABC(x) cout << #x拼接 #define FPRINT(x) f##x##print原创 2016-11-02 16:44:50 · 640 阅读 · 0 评论 -
cpp的策略模式
//// main.cpp// strategyPartner//// Created by bikang on 16/11/17.// Copyright (c) 2016年 bikang. All rights reserved.//#include <iostream>using namespace std;class StrategyCd{public: vi原创 2016-11-17 14:50:45 · 719 阅读 · 0 评论 -
cpp的异常
cpp的异常我们得区分异常,bug,逻辑错误什么是异常?提供一种安全方法,用于程序可以预见,但不常见的情况如何使用他们?带来的问题?try{}catch(...){}手工引发异常throw “exception”;创建异常类//// main.cpp// use_exception//// Created by bikang on 16/11/1.// Copyright (原创 2016-11-01 18:55:56 · 803 阅读 · 0 评论 -
cpp的处理流
cpp的处理流一堆规则,没有什么特别说明的。不过流都是有缓冲区的,这点要记住了。如果不刷新缓冲区或者关闭文件,数据内容可能不会进入文件。流 数据的封装数据缓冲流和缓冲区streambuf 类管理缓冲区,提供填充,清空,刷新,处理缓冲区的功能ios 输出和输入的基础类,它有一个成员变量为streambufistream和ostream 从ios派生专门管理输入输出行为iostream从istre原创 2016-11-01 17:31:05 · 701 阅读 · 0 评论 -
linux socket编程以及简单的tcp,udp的例子
linux socket编程以及简单的tcp,udp的例子通过socket编程大致对网路编程的脉络有个大致的了解,如果有不太懂的地方, 咱们可以到网络上查找手册socket的基本操作创建socketint socket(int domain, int type, int protocol); 1. domain 指定使用何种的地址类型 协议 说明 PF_UNIX/PF_LOC原创 2016-11-07 18:40:08 · 13960 阅读 · 0 评论 -
cpp学习笔记(一)
cpp学习笔记(一)由于已经有了一定的编程基础了,cpp的前几章节和c很像,稍微有一点点不同,因此大略的看看这些笔记是我看的书籍的大纲 ,边看书,边回想大纲里面的内容,写一些简单的测试例子基础的1-9章1 绪论2 C++程序的组成部分3 使用变量和常量4 管理数组和字符串5 使用表达式、语句和运算符6 控制程序流程7 使用函数组织代码8 指针9 引用第一章为何c++是软件开发的标准原创 2016-09-25 15:21:07 · 1633 阅读 · 0 评论 -
AVL树
AVL树的特征1 AVL树 仍然是 左 子 结点 小于 父 结点, 父 结点 小于 右 子 结点2 AVL树 AVL 树( Adel' son- Vel' skii and Landis) 是一 种 特殊 类型 的 二 叉 树, 它的 每个 结点 都 保存 一份 额外 的 信息: 结点 的 平衡 因子。3 AVL 树 需要 自我 调整, 使得 所有 结点 的 平衡 因子 保持 为+ 1、-原创 2016-09-29 17:48:33 · 930 阅读 · 0 评论 -
队列的链表实现
相信有了前面的基础我们可以很容易的实现队列需要引入我的链表的list.c和list.h头文件//// queue.h// queue//// Created by bikang on 16/9/9.// Copyright (c) 2016年 bikang. All rights reserved.//#ifndef __queue__queue__#define __queu原创 2016-09-16 16:59:07 · 715 阅读 · 0 评论 -
栈的链表实现
相信有了前面的基础我们可以很容易的实现栈需要引入我的链表的list.c和list.h头文件//// stack.h// stack//// Created by bikang on 16/9/9.// Copyright (c) 2016年 bikang. All rights reserved.//#ifndef __stack__stack__#define __stack原创 2016-09-15 19:55:24 · 776 阅读 · 0 评论 -
c++调用c和c调用c++
如何在c++中调用c和在c中调用c++如何在c++中调用cc++的设计是兼容c的,但是调用的时候还是需要遵循规则1 包含头文件extern "C"{ #include "c_func.h"}2 声明调用的函数 extern “C”{ int add(int x ,int y); }为什么要加extern “C”?1 C++语言支持函数重载,C语言不支原创 2016-09-02 15:17:44 · 639 阅读 · 0 评论 -
c++中的类
类对于我这种cpp初学者,又使用过其他面向对象编程语言的人来说,c++的类的规则实在是太复杂了,在这里做一个整理类的含义:抽象出现实中的实体,构建基本的属性和函数类的组成:属性和函数属性和方法有不同的修饰符表示权限的 protected,public,private 表示静态的 static 静态变量: static数据成员必须在类定义体的外部定义,且只能定义一次。原创 2016-09-02 09:48:15 · 495 阅读 · 0 评论 -
双向循环链表
头文件//// c_double_list.h// cycle_doublelist//// Created by bikang on 16/9/1.// Copyright (c) 2016年 bikang. All rights reserved.//#ifndef __cycle_doublelist__c_double_list__#define __cycle_dou原创 2016-09-13 17:13:34 · 611 阅读 · 0 评论 -
循环单链表
头文件//// clist.h// cycle_list//// Created by bikang on 16/9/1.// Copyright (c) 2016年 bikang. All rights reserved.//#ifndef __cycle_list__clist__#define __cycle_list__clist__//定义基础的结构typedef原创 2016-09-12 17:56:44 · 519 阅读 · 0 评论