- 博客(31)
- 资源 (1)
- 收藏
- 关注
原创 STL- 常用算法
/ beg1 容器1开始迭代器// end1 容器1结束迭代器// beg2 容器2开始迭代器// end2 容器2结束迭代器// dest 目标容器开始迭代器。// beg1 容器1开始迭代器// end1 容器1结束迭代器// beg2 容器2开始迭代器// end2 容器2结束迭代器// dest 目标容器开始迭代器。copy // 容器内指定范围的元素拷贝到另一容器中。
2023-02-14 21:39:12
148
原创 STL- 函数对象
template T plus //加法仿函数。template T minus //减法仿函数。template T negate //取反仿函数。template T divides //除法仿函数。template T multiplies //乘法仿函数。
2023-02-14 18:40:29
169
原创 STL- 常用容器
一、string容器1、string基本概念本质:string是C++风格的字符串,而string本质上是一个类string和char * 区别:char * 是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。特点:string 类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete 替换replace,插入insertstring管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。
2023-02-14 09:42:05
874
原创 STL初识
学习目标:vector中存放自定义数据类型,并打印输出//自定义数据类型public:mAge = age;//存放对象//创建数据it!= v.end();it++) {//放对象指针//创建数据it!= v.end();test02();return 0;3、Vector容器嵌套容器学习目标:容器中嵌套容器,我们将所有数据进行遍历输出。
2023-02-13 15:52:59
110
原创 C++类模板
解决方式2:将声明和实现写到同一个文件中,并更改后缀名为.hpp,hpp是约定的名称,并不是强制。在上述代码中,如果T的数据类型传入的是像Person这样的自定义数据类型,也无法正常运行。总结:类模板和函数模板语法相似,在声明模板template后面加类,此类称为类模板。当子类继承的父类是一个类模板时,子类在声明的时候,要指定出父类中T的类型。T --- 通用的数据类型,名称可以替换,通常为大写字母。T --- 通用的数据类型,名称可以替换,通常为大写字母。
2023-02-13 15:27:46
752
原创 文件的操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件 ==< fstream >==文件类型分为两种:文本文件- 文件以文本的ASCII码形式存储在计算机中二进制文件- 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream: 读操作fstream : 读写操作。
2023-02-13 11:53:32
43
原创 C++类和对象
C++面向对象的三大特性为:==封装继承多态==C++认为==万事万物都皆为对象==,对象上有其属性和行为例如:人可以作为对象,属性有姓名、年龄、身高、体重...,行为有走、跑、跳、吃饭、唱歌...车也可以作为对象,属性有轮胎、方向盘、车灯...,行为有载人、放音乐、放空调...具有相同性质的==对象==,我们可以抽象称为==类==,人属于人类,车属于车类。
2023-02-13 11:38:45
159
原创 new操作符
堆区开辟的数据,由程序员手动开辟,手动释放,释放利用操作符 ==delete==利用new创建的数据,会返回该数据对应的类型的指针。C++中利用==new==操作符在堆区开辟数据。语法:new 数据类型。
2023-02-10 17:41:06
54
原创 C++实现通讯录管理系统
通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人显示联系人:显示通讯录中所有联系人信息删除联系人:按照姓名进行删除指定联系人查找联系人:按照姓名查看指定联系人信息修改联系人:按照姓名重新修改指定联系人清空联系人:清空通讯录中所有信息退出通讯录:退出当前使用的通讯录。
2022-11-17 16:35:58
574
原创 关于结构体的位域
如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止。如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍。如果相邻的两个位域字段的类型不同,则各个编译器的具体实现有差异,VC6采取不压缩方式,GCC和Dev-C++都采用压缩方式。整个结构体的总大小为最宽基本类型成员大小的整数倍。如果位域字段之间穿插着非位域字段,则不进行压缩。
2022-09-12 01:26:28
1578
原创 C语言结构体struct详解
struct 结构名{成员列表;...;} 数组名[数组长度];struct Student //声明结构体 Student{int num;}stu[5];//定义一个结构结构数组stu,共有5个元素struct 结构名 * 结构指针变量名//定义了一个指针变量,它只能指向Student结构体类型的结构体变量结构指针变量的定义也可以与结构体的定义同时。而且它必须先赋值后使用。数组名表示的是数组的首地址,可以直接赋值给数组指针。
2022-09-11 03:51:56
2218
原创 C语言笔试题归纳
而 str5 和 str6 并非字符数组而是字符指针,并不分配存储区,其后的 “abc” 以常量形式存于常量区,str5 和 str6 是指它们指向的地址的首地址,而它们自己仅是指向该区首地址的指针,所以相等。&a是整个数组的首地址,而a是数组首元素的首地址。这里:&a,&a+1,&a+2 相互之间就是差20个字节(即数组中装有5个元素,每一个元素占4个字节,4 * 5 = 20)。*(p+4)指的是首地址后移4位,因此指向d( \0 为1位)。*p+4指的是*p的值+4,也就是a+4,因此为e;
2022-09-10 18:27:15
663
原创 简单工厂模式
工厂模式是最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂由链表构成,每一个节点就是一个功能函数,主函数通过遍历链表调用相关功能函数。
2022-09-03 23:25:18
73
原创 Linux库之静态库和动态库
库是一种可执行代码的二进制格式,能够被载入到内存中执行。程序函数库可分为3种类型:静态函数库(static libraries)、共享函数库(shared libraries)、动态加载函数库(dynamically loaded libraries)。
2022-08-22 10:51:49
211
原创 六种进程间通信方式详解
信号的名字和编号:每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIO”、“SIGCHLD”等等。信号定义在 signal.h 头文件中,信号名都定义为正整数。具体的信号名称可以使用 kill -l 来查看信号的名字以及序号,信号是从1开始编号的,不存在0号信号。kill对于信号0有特殊的应用。...............
2022-08-17 15:32:15
1518
原创 linux 文件操作(标准I/O)
1、移植性系统函数移植性有限,标准函数移植性高。2、文件IO层次系统IO函数为低级,标准IO函数为高级,区分标准:低级文件IO运行在内核态,高级文件IO运行在用户态。3、缓冲区系统函数不带缓冲区,标准函数自带缓冲区。系统函数既可以读写字符、字符串、格式化数据,也可以读写二进制数据。标准函数只能读写二进制文件,但效率高、速度快。......
2022-08-15 17:55:11
91
原创 linux 文件操作 (系统I/O)
标准库的I/O函数:系统I/O和标准I/O区别:1、移植性系统函数移植性有限,标准函数移植性高。2、文件IO层次系统IO函数为低级,标准IO函数为高级,区分标准:低级文件IO运行在内核态,高级文件IO运行在用户态。3、缓冲区系统函数不带缓冲区,标准函数自带缓冲区。系统函数既可以读写字符、字符串、格式化数据,也可以读写二进制数据。标准函数只能读写二进制文件,但效率高、速度快。......
2022-08-15 16:25:02
50
原创 数组的翻转
奇数个时:偶数个时:代码:#include<stdio.h>void PrintArray(int *parr,int len){ int i; for(i = 0;i < len;i++) { printf("%d ",*parr++); }}void RevangeArray(int *parr,int len){ int i,j,temp; for(i = 0;i..
2022-05-17 09:30:17
48
原创 函数指针和指针函数
函数指针和指针函数是C语言里两个比较绕的概念。但是不仅面试题爱考,实际应用中也比较广泛。很多人因为搞不清这两个概念,干脆就避而远之,我刚接触C语言的时候对这两个概念也比较模糊,特别是当指针函数、函数指针、函数指针变量、函数指针数组放在一块的时候,能把强迫症的人活活逼疯。其实如果理解了这些概念的本质,是不需要死记硬背的,理解起来也比较容易。
2022-05-16 22:56:54
1866
原创 数组指针和指针数组
首先,理解一下数组指针和指针数组这两个名词。“数组指针”和“指针数组”,只要在名词中间加上“的”字,就知道中心了:数组的指针:是一个指针,什么样的指针呢?指向数组的指针。 指针的数组:是一个数组,什么样的数组呢?装着指针的数组。然后,需要明确一个优先级顺序:()>[]>*,所以:(*p)[n]:根据优先级,先看括号内,则p是一个指针,这个指针指向一个一维数组,数组长度为n,这是“数组的指针”,即数组指针; *p[n]:根据优先级,先看[],则p是一个数组,再结合*,这个数组的元素是
2022-05-16 20:37:51
153
原创 递归函数解释
递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。所以递归要有两个要素,结束条件与递推关系。例:有5个学生坐在一起,问第5个学生多少岁,他说比第4个学生大2岁。问第4个学生岁数,他说比第3个学生大2岁。问第3个学生岁数,他说比第2个学生大2岁。问第2个学生岁数,他说比第1个学生大2岁。最后问第1个学生,他说是10岁。请问第5个学生多大?#include<stdi
2022-05-16 10:41:38
73
原创 简单选择排序法
由大到小:#includeint main(){ int array[4] = {8,12,3,9}; int i,j; int temp; int len = sizeof(array)/sizeof(array[0]); for(i=0;i<len-1;i++) {/*①每一轮的首个数依次与后面的数逐个比较,更后面的数比首位数大,则发生交换,确保首位数为最大值。②随着i逐渐增大,各轮依次进行,数组从array[0]到a..
2022-05-16 10:26:50
66
原创 冒泡排序法
12 8 13 9由小到大:#includeint main(){ int array[] = {12,8,13,9}; int i,j; int temp; int len = sizeof(array)/sizeof(array[0]); for(i=0;i<len-1;i++) { for(j=0;j<len-1-i;j++) {/*①当后一个数大于前一个数时,两者交换位置,使最大值最
2022-05-16 10:02:26
60
原创 斐波那契数列
1、1、2、3、5、13、21、34...F[n] = F[n-1] + F[n - 2]#include<stdio.h>int main(){ int i; int size; int array[30]; array[0]=0; array[1]=1; size = sizeof(array)/sizeof(array[0]); for(i=2;i<size;i++) { array[i]=array[i-1]+a
2022-05-12 15:18:23
47
原创 printf、putchar、puts和scanf、getchar函数的区别
1、printf输出任意字符串形式:printf(“格式控制字符串”,输出列表);注:格式字符与对应的输出数据的类型要一致。(1)%d:十进制形式输出带符号整数。(d前可以加数字)%4d表示最小占用4个字符的宽度,如果这个数只有3位,前边用空格填充,如果大于4位,按实际输出。(2)%ld:长整型方式输出(3)%o:以八进制形式输出整数(4)%x:以十六进制的形式输出整数(5)%u:以十进制输出unsigned型数据(6)%c:输出一个字符(7)%s:输出字符串(8
2022-05-12 10:55:11
672
原创 C语言指针
一、地址的概念引入变量的访问有两种方式:1、变量名printf("ju = %d\n",juHuaTai);2、地址printf("ju = %d\n",*(&juHuaTai));printf("ju的地址是:%p\n",&juHuaTai);二、指针变量的引入什么变量能存放地址?答:指针变量怎样才能定义一个指针变量?答: int *p ; p = &a 或 int *p = &a只有在定义一个指针变量...
2022-05-12 10:35:37
47
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人