C/C++
文章平均质量分 85
C/C++
月屯
学会做夜空中那颗最亮的星
展开
-
bingc++(完美转发、线程库、特殊类、异常)
原子类型// 声明一个类型为T的原子类型变量t注意:原子类型通常属于"资源型"数据,多个线程只能访问单个原子类型的拷贝,因此在C++11中,原子类型只能从其模板参数中进行构造,不允许原子类型进行拷贝构造、移动构造以及operator=等,为了防止意外,标准库已经将atmoic模板类中的拷贝构造、移动构造、赋值运算符重载默认删除掉了。// 编译失败 atomic < int > a2(0);//a2 = a1;// 编译失败 return 0;}lock_guard与unique_lock。原创 2022-10-14 22:06:51 · 453 阅读 · 1 评论 -
bingc++(智能指针、类型转化、c++11)
上一篇 原理 使用 模拟 模拟改进容易造成野指针不允许拷贝和赋值 模拟 模拟 shared_ptr中存在的循环引用问题解决方式: weak_ptr的唯一作用就是协助shared_ptr解决循环引用为题,即weak_ptr不能独立管理资源的 类型转化 标准C++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符:static_cast、reinterpret_cast、const_cast、dynamic_cast用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用static_c原创 2022-07-13 15:03:04 · 273 阅读 · 0 评论 -
bingc++(map、set、树、哈希、位图、布隆过滤器)
上一篇 底层为红黑树结构C++98二叉搜索树+平衡限制底层为哈希结构:C++11 都足关于key有序的,并且查找的时间复杂度都是O(IogN)基本使用默认按key升序,如果key一致,按照升序基本使用 set 树 二叉搜索树 平衡二叉树 红黑树 红黑树的性质 1.每个结点不是红色就是黑色 2.根节点是黑色的 3如果一个节点是红色的,则它的两个孩子结点是黑色的每条路径中黑色节点个数相同(不会出现连在一起的红色节点) 4.对于每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点 5.每原创 2022-07-03 10:52:30 · 239 阅读 · 0 评论 -
bingc++(STL(stack、queue)、IO流)
上一篇 目录标题原创 2022-04-28 17:33:25 · 790 阅读 · 0 评论 -
bingc++(继承)
上一篇 例子一定是在public的继承方式下才满足 注意在实际中在继承体系里面最好不要定义同名的成员。 派生类的默认成员函数 派生类的构造函数必须调用基类的构造函数初始化基类的那一部分成员。如果基类没有默认的构造函数,则必须在派生类构造函数的初始化列表阶段显示调用。 派生类的拷贝构造函数必须调用基类的拷贝构造完成基类的拷贝初始化。(基类没定义了,子类无所谓,基类定义了,子类一般也定义) 派生类的operator=必须要调用基类的operator=完成基类的复制。 派生类的析构函数会在被调用完成后自动调原创 2022-06-11 22:05:26 · 229 阅读 · 0 评论 -
bingc++模板、STL(string、vector、list)
下一篇 文章目录模板 模板 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。原创 2022-04-20 21:55:41 · 753 阅读 · 0 评论 -
c/c++bing(练习题)
1.下面程序的结果是:( ) #include <stdio.h> #include <string.h> int main() { printf("%d\n", strlen("c:\test\121")) return 0; } strlen:获取字符串的有效长度,不包括’\0’ “c:\test\121”: 在该字符串中,\t是转移字符,水平制表,跳到下一个tab的位置;而\121表示一个字符,是讲121看做8进制数组,转换为10进制后的81,作业为ASCII原创 2022-04-02 21:49:48 · 1002 阅读 · 0 评论 -
bingc++动态内存管理
上一篇原创 2022-03-28 21:28:43 · 685 阅读 · 0 评论 -
bingc++类
类原创 2022-03-25 10:55:24 · 184 阅读 · 0 评论 -
c++ Date的实现
#include<iostream> using namespace std; class Date{ public: int _year; int _month; int _day; explicit Date(int year=1998,int month=3, int day=20) :_year(year), _month(month), _day(day){ if(!(_year>0&&_原创 2022-03-23 15:41:46 · 1050 阅读 · 0 评论 -
bingc++01
目录标题关键字命名空间定义使用打印全局变量C++输入&输出缺省值注意事项函数重载定义表现 关键字 c90 32个 c++98 63个 命名空间 在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。 定义 namespace N1 // N1为命名空间的名称 { // 命名空间中的内容,既可以定义变量,也可原创 2022-03-14 08:58:55 · 286 阅读 · 0 评论 -
堆的基本操作源代码bing
Heap.h #pragma once #include<stdio.h> #include<assert.h> #include<malloc.h> typedef int type; typedef type(*function)(type, type); typedef struct Heap { int size = 0; int capcity; type* array; function fun; }Heap; //初始化 void heapCrea原创 2022-01-10 17:16:50 · 292 阅读 · 0 评论 -
动态内存管理、文件操作、预处理
目录标题动态内存管理malloc使用释放时间free使用calloc使用realloc使用常见的内存错误常见的题型1.2.3.4.一个程序的内存区域 动态内存管理 通过创建变量的方式来申请内存的.啥时候释放内存,就得看变量是啥样的变量了. 如果是全局变量,就跟随程序释放. 如果是静态变量,也跟随程序释放. 如果是局部变量,就跟随代码块释放. 1.动态内存管理,能够更灵活的决定申请时机和释放时机~ 2.动态内存管理可以在运行时决定内存申请的大小~ malloc void* malloc (size_t siz原创 2022-01-01 10:52:23 · 827 阅读 · 0 评论 -
结构体、枚举、共同体、指针、函数bing
数组和结构体整体初始化只有一次即定义时。 汉字 GBK编码 汉字占2字节 UTF-8变长编码 符号占 1~4字节 汉字通常通常3个 windows 默认GBK linux 默认UTF-8 结构体 创建、访问修改 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> typedef struct Student{ int id; char name[10]; } Student; int main()原创 2021-12-29 17:26:07 · 430 阅读 · 0 评论 -
初始c笔记bing
类型字节 char 1 short 2 int 16位电脑 2 32/64位 4 long 4 linux 8 long long 8 float 4 double 8 long double 8原创 2021-12-21 17:43:16 · 85 阅读 · 0 评论 -
读写文件(C语言)
打开关闭文件 FILE * fopen (const char * filename,const char* mode ); int fclose ( FILE* stream); 代码实例 int main() { int a = 10000; FILE* pf = fopen("test.txt", "wb"); fwrite(&a, 4, 1, pf);//二进制的形式写到文件中 fclose(pf); pf = NULL; return 0; } 操作文件 fgetc以EOF原创 2020-12-16 13:47:09 · 176 阅读 · 0 评论 -
动态分配内存(c语言)柔性数组
和数组区别 数组是在编译时期确定大小,运行时期分配内存,分配在栈上。 动态申请内存,在堆上,申请一块连续的内存。 calloc会自动进行一次初始化 易错题 text2打印随机数,因为数组p建立是存在栈上的函数结束,栈不存在内容不存在,故而函数GetMemory确实返回的是当初数组的地址也打印不出当初的内容 c/c++储存状态 柔性数组 介绍 结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。 柔性数组的特点: 结构中的柔性数组成员前面必须至少一个其他成员。sizeof 返回的这原创 2020-12-15 19:56:09 · 312 阅读 · 0 评论 -
建议设计一个通讯录(c语言)bing
用到的陌生函数 memset//在string.h中 #include<stdio.h> #include<assert.h> #include<string.h> #define MAX_NUMPERSON 10 typedef struct PersonInfo { //每个人的信息 char name[20]; char sex[20]; int age; char tele[20]; char addr[20]; } PersonInfo; typed原创 2020-12-15 16:35:24 · 160 阅读 · 0 评论 -
结构体、位端、union字节大小计算
结构体内存对齐 规则 第一个成员在与结构体变量偏移量为0的地址处。 其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。对齐数 = 编译器默认的一个对齐数与该成员大小的较小值。(VS中默认的值为8) 结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。 例如: 为什么存在内存对齐? 平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意原创 2020-12-15 15:34:17 · 838 阅读 · 0 评论 -
字符串和内置函数
1.strlen的返回值是无符号整形 2.strcpy、strcat有返回值,作用是为了支持链式表达式 例如: int main(){ char a[10]={0}; char*p="hello"; printf("%d",strlen(strcpy(a,p))); } 自己写的strstr函数 库函数 自己实现 #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h原创 2020-12-14 21:10:44 · 333 阅读 · 0 评论 -
简单设计一个扫雷游戏(c语言实现)bing
本代码的游戏行列数是1-9; #include<stdio.h> #include<stdlib.h> char** creatMat(int row,int col){//创建矩阵 char **b =(char **)malloc((row+2)*sizeof(char *));//先申请M个指针型字节的空间 for (int i=0;i<row+2;i++) b[i]=(char *)malloc((col+2)*sizeof(char))原创 2020-12-14 15:10:15 · 288 阅读 · 0 评论 -
翻转英文句子(倒置字符串)
题目: 将一句话的单词进行倒置,标点不倒置。比如| like beijing.经过函数后变为: beijing.like l 解析: 可以使用指针现将整体倒置,单后在以空格位界,将各个单词倒置 代码: #include<stdio.h> #include<string.h> void reverse(char*left,char*right){ while(right>left){ char a=*left; *left=*right; *right=a; left++; ri原创 2020-12-14 10:12:36 · 548 阅读 · 0 评论 -
数据的储存例题
整型的存储 判断数据小端存储还是大端存储 #include<stdio.h> int main(){ int a=0x11223344; char *p=(char *)&a; if(*p==0x44) printf("xiaoduan"); else printf("daduan"); return 0;} 1. #include <stdio.h> int main(){ char a= -1; signed char b=-1; unsigne原创 2020-12-13 23:17:44 · 208 阅读 · 0 评论 -
sizeof strlen对数组的用法
int main(){ //一维数组 int a[] = {1,2,3,4}; printf("%d\n",sizeof(a));//16 printf("%d\n",sizeof(a+0));//4 &a[0] printf("%d\n",sizeof(*a));//4 a[0] printf("%d\n",sizeof(a+1));//*a->1 4 printf("%d\n",sizeof(a[1]));//*(a+1) 4 printf("%d\n",sizeof(&原创 2020-12-13 17:47:32 · 285 阅读 · 0 评论 -
strlen的模拟(C语言)(仅做标记摘抄)
非递归 int my_strlen(char* str) { int count = 0; while('\0' != *str) { count++; str++; } return count; } 递归 int my_strlen(char *str) { if('\0' == *str) return 0; else return 1+my_strlen(1+str); }原创 2020-11-06 19:28:14 · 66 阅读 · 0 评论 -
编写一个C语言函数字符串翻转函数(摘抄)
非递归 void reverse_string(char* arr) { char *left = arr; char *right = arr+strlen(arr)-1; while(left<right) { char tmp = *left; *left = *right; *right = tmp; left++; right--; } } 递归 void reverse_string(char* arr) { int len = strle原创 2020-11-06 19:32:35 · 489 阅读 · 0 评论 -
c语言回调函数(摘抄)指针
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。 简单使用: #include <stdio.h>//qosrt函数的使用者得实现一个比较函数int int_cmp(const void * p1, const void * p2){ return (*( int *)p1 -原创 2020-11-17 19:55:51 · 130 阅读 · 0 评论