- 博客(80)
- 收藏
- 关注
原创 排序
#include <stdio.h>void my_print(int *a,int len){ int i; for(i = 0;i<len;i++) { printf("%-4d",a[i]); } printf("\n");}void my_swap(int *a,int i,int j){ int tmp = a[i]; a[i] = a[j...
2019-03-07 11:34:40 162
原创 C++ 组合模式
#include <iostream>#include <list>#include <string>#include <algorithm>using namespace std;class IFile{public: virtual ~IFile(){} virtual void show() = 0; ...
2019-01-28 19:56:23 166
原创 C++抽象工厂
#include <iostream>#include <string>using namespace std;// 抽象工厂模式// 衣服的基类class Clothes{public: virtual void show() = 0;};class AD_T_shirt:public Clothes{public: void s...
2019-01-27 21:40:01 164
原创 C++ 单例设计模式
#include <iostream>using namespace std;// 单例模式 --- 懒汉式class Singleton{private: Singleton() { }public: static Singleton* GetInstance() { if (m_instance == nul...
2019-01-26 21:00:45 216 1
原创 丑数
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。根据丑数的定义,丑数应该是另一个丑数乘以2、3、5的结果(1除外)。因此我们可以创建一个数组,里面的数字是排好序的丑数,每一个丑数都是前面的丑数乘以2、3或者5得到的。这种思路的关键在于怎样确保数组里面的丑数是排好...
2019-01-25 20:36:16 1542
原创 C++文件操作
1.ofstream fout("aa"); 写文件操作 写的文件是aa2.ifstream写二进制文件ofstream fout("bb",ios::binary);#include <iostream>using namespace std;int main1(int argc, char *argv[]){ char buf[100]; w...
2019-01-24 20:56:00 114
原创 进程间通信方式
进程间通信方式(1)管道:管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道尾部写入数据,另一个进程(读进程)从管道的头部读出数据。管道包括无名管道和有名管道两种,前者用于父进程和子进程间的通信,后者可用于运行于同一系统中的任意两个进程间的通信。(2)共享内存:共享内存是被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,...
2019-01-23 21:55:17 112
原创 C++ map
map :键值对map<int,string> m;mp.insert(make_pair(1,“faith1”));mp.insert(pair<int,string>(3,“faith3”));mp.insert(map<int,string>::value_type(2,“faith2”));mp[4] = “faith4”;insert是函数...
2019-01-22 18:43:37 139
原创 C++ deque,list
链表特性:1.l.reverse() //逆序2.链表不支持迭代器的随机访问it++;可以it+1;不行3.可以直接删除值,删掉所有特定值的元素l.remove(2);#include <iostream>#include <algorithm>#include <string>#include <deque>#inc...
2019-01-21 18:45:09 250
原创 STL标准模板库
1.算法,容器,仿函数,适配器,迭代器容器:类模板 ---->各种各样的数据结构算法:函数模板---->100+算法如统计,排序,遍历等迭代器:对容器中元素提供统一的遍历方式大部分容器都有属于自己的迭代器有迭代器的容器都有两个基本方法:1.begin()函数:返回指向第一个元素的迭代器2.end()函数:返回指向最后一个元素的下一个元素的迭代器迭代器可以近似当做一个指针...
2019-01-20 20:56:53 104
转载 Linux探秘之用户态与内核态
一、 Unix/Linux的体系架构如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核必须为上层应用提供访问的接口:即系...
2019-01-19 20:56:09 137
原创 C++多继承
1.多继承中类型兼容性原则依然适用2.多继承的二义性:通过类名和域解析符解决#include <iostream>using namespace std;// 多继承class Parent1{public: int a; int b;};class Parent2{public: int a; int d;};class...
2019-01-19 18:56:52 354
原创 getchar和getch
1.getchar();从键盘读取一个字符并输出,该函数的返回值是输入第一个字符的ASCII码;若用户输入的是一连串字符,函数直到用户输入回车时结束,输入的字符连同回车一起存入键盘缓冲区。若程序中有后继的getchar();函数,则直接从缓冲区逐个读取已输入的字符并输出,直到缓冲区为空时才重新读取用户的键盘输入。2.getch();接受一个任意键的输入,不用按回车就返回。该函数的返回值是所输入字...
2019-01-18 10:12:15 486
原创 C++栈
首先看一下原c++栈的方法的基本用法:push(): 向栈内压入一个成员;pop(): 从栈顶弹出一个成员;empty(): 如果栈为空返回true,否则返回false;top(): 返回栈顶,但不删除成员;size(): 返回栈内元素的大小#include<iostream>#include<stack>using namespace std;int ...
2019-01-17 16:06:15 1220
原创 C++继承
一、继承一个类从另一个类获取成员函数和成员变量的过程-------------->代码复用语法:继承: class 新类:访问控制 要继承的类;#include <iostream>#include <cstring>using namespace std;class Animal{public: void sleep() { ...
2019-01-15 18:38:37 96
原创 C++友元
友元:可以访问类的私有成员友元函数:如果有一个函数是类A的友元函数,则该函数可以使用A中的所有成员友元声明:在类中写上函数声明,在函数声明前加friend使用注意:1.友元的声明不受访问控制符限制,可以放在类的任意位置2友元函数不是类的成员函数,是外部函数,没有this指针3.友元破坏了类的封装性,慎用(尽量不用)友元类:如果类A是类B的友元类,则类A中所有函数都是类B的友元函数....
2019-01-14 19:03:23 299
原创 链表
#include <iostream>#include <cstring>using namespace std;struct DATA{ int id; char name[20];};struct Node{ DATA data; struct Node* next;};Node* Create(Node** head...
2019-01-13 16:54:16 107
原创 进程线程的区别
进程线程的区别 僵尸进程进程是表示资源分配的基本单位,又是调度运行的基本单位。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。“进程——资源分配...
2019-01-13 16:00:10 113
原创 C++对象初始化列表
对象初始列表:构造函数后加 : 后面接上要初始化的成员,各个成员之间以逗号进行区分。1.对象初始化列表的执行顺序要优先于构造函数。2.对象初始化顺序和对象在初始化列表中所在位置无关,和在类中的声明顺序有关。#include using namespace std;class Test2{public:Test2():m_a(10),m_b(99){cout<<“a...
2019-01-12 19:16:03 839
原创 C++构造函数,析构函数
构造函数:在创建对象时系统自动调用的函数===>初始化对象如果类中一个构造函数都没有,系统会自动添加一个无参构造函数特点:1.构造函数的函数与类名相同。2.无返回值3.构造函数可以重载(1)如果某个构造函数被调用了,则一定是有一个新对象创建(2)如果创建一个新的对象,必定会调用某个构造函数调用方法1.使用括号进行赋值Test t(10);2.等号法Test t1 = T...
2019-01-11 19:37:20 114
原创 C++动态内存分配
C中使用malloc 和free ----->库函数,不是语法的一部分C++中使用new 和delete ----->是运算符(+,-,*….)是语法的一部分strlen---->函数 :计算字符串长度sizeof----->运算符 :计算变量类型所占空间的大小。#include <iostream>#include <stdlib.h>...
2019-01-10 18:16:51 125
原创 C++ 第二天
constC++中,const修饰的是一个常量1.const常量正常情况下内存不会为其分配空间。2.使用的时候去符号表中取值。3.如果对const常量进行取地址操作,则编译器会为其分配一块空间,但他本身并不会使用。4.建议用const替换宏常量。const和define的区别(1)define在预处理时处理,做的工作是完全替换,在程序中有多个备份。const是编译的时候处理,会进行...
2019-01-09 18:27:05 142
原创 C++第一天
#include <stdio.h>#include <cstdio>// 命名空间的定义:定义一块命名空间,名字叫 NameAnamespace NameA{ // 原来全局空间可以做的事情,命名空间都可以做:定义变量、函数、宏、结构体、枚举.... int g_a; int g_b; int add(int a, int b...
2019-01-08 20:08:48 114
原创 Sqlite3 数据库操作
#include <stdio.h>#include <sqlite3.h>int main(){ sqlite3 *db; int ret = sqlite3_open("student.db",&db); if (ret != SQLITE_OK) { printf ("数据库打开失败\n"); return -1; } char...
2019-01-07 14:24:41 139
原创 UDP服务器
#include <stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <arpa/inet.h>#include <string.h>#include <unistd.h>#include &...
2019-01-03 19:32:23 373
原创 TCP服务器与客户端的创建
基于TCP-服务器1.创建一个socket,用函数socket()2.绑定IP地址、端口等信息到socket上,用函数bind()3.设置允许的最大连接数,用函数listen()4.接收客户端上来的连接,用函数accept()5.收发数据,用函数send()和recv(),或者read()和write()6.关闭网络连接#include <stdio.h>#includ...
2019-01-02 19:09:33 281
原创 进程知识点整理2
exec用被执行的程序替换调用它的程序区别:fork 创建一个新的进程,产生一个新的PIDexec 启动一个新程序,替换原有的进程,因此进程的PID不会改变。execl:#include <unistd.h>int execl(const char * path, const char* arg1,…)参数:path : 被执行程序名(含完整路径)。arg1...
2018-12-25 20:41:59 165
原创 Linux C第二十四天
进程:进程是一个具有一定独立功能的程序的一次运行活动进程是一个程序正在执行的实例。每个这样的实例都有自己的地址空间和执行状态。进程ID:每个进程都有一个ID(ID是一个正整数),唯一标识了系统中的这个进程。每个进程都有一个创建它的进程,叫父进程(Parent Process)进程ID(PID):标识进程的唯一数字父进程ID(PPID)启动进程的用户ID(UID)进程的生命周期:...
2018-12-24 17:18:19 112 1
原创 文件编程
手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件中除去首行和末尾对应的数据相加,三个文本的内容如下text1:begin10 11 1220 21 2230 31 31endtext2:begin15 16 1725 26 2735 36 37endtext3:begin25 2...
2018-12-22 13:40:41 644
原创 Linux C通讯录文件版
头文件:#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef int DATA;typedef enum{TRUE,FALSE,ERROR}BOOL;enum{QUIT,INSERT,DISPLAY,SEARCH,DELETE};typedef struct addlist{ long pertel; long comtel; int...
2018-12-21 19:11:21 290
原创 Linux C 学习第二十三天
文件编程:所有的操作系统都提供多种服务的入口点,程序由此向内核请求服务。这些可直接进入内核的入口点被称为系统调用。“文件”这个名词不陌生,什么是文件?系统资源(内存、硬盘、一般设备、进程间通信的通道等)的一个抽象对系统资源进行访问的一个通用接口。采用这种“文件”的方式有什么好处?对资源提供通用的操作接口,可以极大地简化系统编程接口的设计。既然文件是一个通用的接口,由于系统资源多种多样...
2018-12-20 18:45:32 166
原创 二叉树遍历
遍历二叉树:二叉树的遍历是指从根结点出发,按照某种次序访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次.这里有两个关键词 :访问和次序树的结点不存在唯一的前驱和后继关系,在访问一个结点后,下一个被访问的结点面临着不同的选择。1.前序遍历规则是若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。如下图所示,便利顺序为ABDGHCEIF2.中序遍...
2018-12-19 19:17:55 128
原创 Linux C学习第二十二天
排序:1.冒泡排序#include <stdio.h>void my_print(int *a,int len){ int i; for(i = 0;i<len;i++) { printf("%-4d",a[i]); } printf("\n");}void my_swap(int *a,int i,int j){ int tmp = a[i];...
2018-12-18 18:35:46 128
原创 C语言深度剖析-内存管理和函数
第五章:内存管理1.栈,堆和静态区堆:由malloc系列函数或new操作符分配的内存。其生命周期由free或delete决定。在没有释放之前一直存在,直到程序结束。其特点是使用灵活,空间比较大,但容易出错。栈: 保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。其特点是效率高,但是空间大小有限(64位大概为8M)。静态区: 保存自动全局变量和stat...
2018-12-16 16:29:52 151
原创 又又又又写一遍链表
#include <stdio.h>#include <stdlib.h>#include <string.h>//typedef int DATA;typedef enum{TRUE,FALSE,ERROR}BOOL;typedef struct Data{ int id; char name[15];}DATA;typedef struc...
2018-12-15 10:31:50 158
原创 Linux C 栈和队列实现停车场管理系统
/*停车场管理问题描述:停车场是一个能放n辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放。若停车场满了,车要停在门外的便道上等候,一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,由于通道窄,在它后面的车要先退出,待它走后依次进入。汽车离开时按停放时间收费。基本功能要求:1.建立三个数据结构分别是:停车栈,让路栈,等候队列。2.输入数据模拟管理过程,数据(入或出,...
2018-12-14 18:15:48 354
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人