![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
cpp
cleveryuoyuo
这个作者很懒,什么都没留下…
展开
-
布隆过滤器和位图
hash原创 2022-01-19 22:20:20 · 326 阅读 · 0 评论 -
走迷宫问题。。字符串距离
字符串距离也是用str1的每个数据和str2比较,一层一层的下去 从每层元素的左边和上边两个位置找到最近的的位置,这样都能保证最后走到的是最小的位置,想起来可能比较抽象,但是画图之后,想想确实是这个道理。代码如下://字符串的距离int min(int x, int y){ return x < y ? x : y;}int main(){ string str1, str2; while (cin >> str1 >> str2) { int le原创 2021-11-09 19:48:27 · 72 阅读 · 0 评论 -
输出两个字符串的相同字符串的个数
eg:asdfaswerasdfaswer输出6我是用两个指针来操作的xs是长的字符串,ns是短的那个。因为每次从短的开始,遍历长字符串开始的头部,大的需要遍历短字符串的元素个数次。小的 每次从短的开始便利长字符串,相同啧开始一同向后遍历,如果长的不会遍历完全,则需要让短的在指向刚开始,长的从上次遍历的下一个位置开始遍历。#include <iostream>#include <string>using namespace std;int main(){ s原创 2021-11-03 18:46:17 · 951 阅读 · 0 评论 -
练习题,做错的不会的
一static int a = 1;void fun1(){ a = 2; }void fun2(){ int a = 3; }void fun3(){ static int a = 4; }int main(){ printf("%d", a); fun1(); printf("%d", a); fun2(); printf("%d", a); fun3(); printf("%d", a); return 0; // 1 2 2 2}static局部变量一旦成原创 2021-10-28 17:25:02 · 74 阅读 · 0 评论 -
linux进程间通讯,(父子进程间)
管道通讯(父读子写)互斥:任何时刻只能有一个人正在使用某种资源管道内部自动提供了互斥与同步机制如果写端关闭,读端就会read返回值0,代表文件结束如果打开文件的进程退出,文件也会被释放文件的生命周期随进程<管道的流式服务>管道是半双工,就是数据只可以向一个方向流动匿名管道,适合具有血缘关系的进程进行进程间通讯read :没有内容挂起write:没有空间挂起如若管道没有父进程读,就会读文件错误。read关闭,一直写,写方(child)被操作系统杀掉,写入无意义linux实原创 2021-10-25 22:27:13 · 573 阅读 · 0 评论 -
做题修正的正确答案
求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 空间复杂度O(1)这个是不能是负数的操作,如果是负数,一直补符号位导致无法结束循环。int Max(int a, int b){ return a > b ? a : b;}int main(){ int num; while (cin >> num) { int count = 0, max_count = 0; while (num) { if原创 2021-10-25 19:34:45 · 160 阅读 · 0 评论 -
2021-10-19
求连续子数组最大和int Getmax(int a, int b){ return a > b ? a : b;}int main(){ int size = 0; cin >> size; vector<int> nums(size); for (int i = 0; i < size; ++i) { cin >> nums[i]; } int sum = nums[0]; int max = nums[0]; for原创 2021-10-19 22:46:54 · 93 阅读 · 0 评论 -
红黑树的插入和删除
RBTRee 插入节点:首先用BSTree的方法构造节点,然后创建一个真实的空节点,让所有没有真是子节点的节点都指向这个真实的空节点,而不是nullptr。插入之后的调平颜色和高度是问题的关键。以左子树为例,右子树为镜像操作。先找到叔伯节点,若叔伯节点不为空且颜色为红色,则父节点颜色改为黑色,叔伯节点变为黑色,爷爷节点变为红色,然后插入节点由原来的位置变成爷爷节点,然后向上回溯。这是一种情况。左边的直线插入 ‘ / ’ ,将父节点的颜色变为黑色,爷爷节点的颜色变成红色,然后进行一个右单旋转。如果是原创 2021-08-04 23:43:32 · 123 阅读 · 1 评论 -
AVLTree的编写规则
AVLTree 高度平衡的二叉搜索树 平衡因子 bf = rh - lh即利用bf=根节点的右树长度-左树长度的正负值,来将极端情况下的BSTree调节平衡。在AVLTree中,调节过程需要用到stack,stack先把插入的地址都存入栈中,直到不平衡出栈,找到父节点。‘ \ ’ 左单旋转 , ‘ / ’ 右单旋转 。‘ > '先右后左 , ‘ < ’ 先左后右 。Remove 的节点 最多只能有一个子女节点,如果没有,利用左右子节点调整数值。本次利用找到左子树的右子树的最大值原创 2021-08-02 23:00:27 · 74 阅读 · 0 评论 -
继承---目的:复用代码
继承:可以理解为将弗雷德代码拷贝一份给子类,但是构造和析构函数不可以继承。子类可直接调用父类的方法(公有方法)。保护方法可以在子类中用子类的方法调用父类的保护方法。保护继承会将父类的公有方法变成保护方法。(私有同样的性质 继承最小性原则)。父类的私有数据不可以访问如果不写继承方法,则默认为私有继承。struct是公有继承’复制件用性原则:子类对象可以以对象,指针,引用的方法给父类赋值。子类与父类有同名的方法则用子类访问时,访问的是子类的方法如果同名方法中子类给父类赋值后,同名访问父类方法原创 2021-07-19 00:12:59 · 69 阅读 · 0 评论 -
剑指offer 求1+2+3+...+n
要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)class Solution {public: class Sum { public: Sum() { _sum += _i; _i++; } }; int Sum_Solution(int n) { _i = 1;原创 2021-06-18 15:42:00 · 48 阅读 · 0 评论 -
文件管理操作之c++版本 cpp和流操作
首先来看一下c语言的操作//c语言的写入void main(){ int ar[] = { 10, 11, 22, 33, 44, 55, 66, 77, 88, 99 }; int size = sizeof(ar) / sizeof(ar[0]); FILE* fp = fopen("Test1.txt", "w"); assert(fp!=NULL); // "w" 是写入,创建一个fp的txt 功能是写入 for (int i = 0; i < size; ++i) {原创 2021-06-17 21:22:38 · 201 阅读 · 0 评论 -
模板的使用
先来个模板的随便使用template<typename Type, size_t _N=8>class SeqList{public: SeqList(int sz = SZ_SZIE) { capacity = sz > SZ_SIZE ? sz : SZ_SIZE; base = new Type[capacity]; size = 0; }private: enum{SZ_SIZE = 8};private: Type* base; size_t原创 2021-06-15 23:40:08 · 64 阅读 · 0 评论 -
stack_queue的详细解释和使用
stack是栈,没有迭代器,以下是相关代码测试; //stack容器适配器 没有迭代器 不能用auto top:栈顶 pop:出栈namespace ghc{ template<class _Ty> class stack { public: stack()//list自己会做 {} ~stack()//list自己会做 {} public: bool empty()const { return _C.empty(); } size_t s原创 2021-05-24 15:32:41 · 153 阅读 · 0 评论 -
string的实现
因为代码中为了符合规范的函数名称,很多整数用size_t,但是操作时为了方便,不考虑-1,用int。代码的整体思路和链表的实现没有太大差距。新人学习所写,请酌情批评。#include<iostream>#include<assert.h>using namespace std;namespace ghc{ class string { friend ostream& operator<<(ostream& out, const str原创 2021-05-15 14:09:12 · 84 阅读 · 0 评论 -
list的c++实现
第一次写list的实现 要是有不小心错了的地方,请留言改正创建迭代器类,实质上就是封装一个节点指针,通过节点指针实现操作,至少要实现的操作符已说明。这两个类都要设置List为友元类,因为这样才能用List直接操作迭代器的相关操作。创建一个类,用来存放list的内容,不过可以用struct来代替,list可以写入初始值的构造和析构可暂时将迭代器理解成一个指针,该指针指向list中的某个节点迭代器中的函数用来进行各种基础操作写的不是很详细,不是很齐全。所写代码如下namespace ghc{原创 2021-04-21 16:40:56 · 122 阅读 · 0 评论 -
list和vector的小操作,刚学的,写写简单的操作
//使用list或者vector中的函数时候,得在前面加上关键字//实验vectorvoid main(){ vector<int> iv(5, 1); iv.reserve(100); // for (int i = 1; i <= 100; ++i) { iv.push_back(i); cout << "capacity = " << iv.capacity() << " "; } cout << endl;原创 2021-04-20 22:58:43 · 56 阅读 · 0 评论 -
list类,模板的操作
以下是总体的解释,代码处都有标识。首先定义一个模板类 用_Ty, 因为类型不同的类,所以统一用宏定义一些类型名。构造函数要用显示构造,针对于节点 写了三个函数操作定义了三个函数 伺候_Next的三个域 静态函数可以不通过对象调动,通过类名就可以调动既然已经写了_Acc所以在进行对创建的链表的前后指向操作时,用_Acc来找购买结点指针创建一个指针指向开辟的_Nodenamespace ghc{ template<class _Ty> class list { publi原创 2021-04-01 22:23:01 · 272 阅读 · 0 评论 -
模板
模板的存在是为了解决代码的冗余(重复性) 把类型当作参数传递,关键字 template例如交换函数本来这里需要写三个不同类型的函数,但是使用模板之后,只用写一个template<class Type>void Swap(Type& a, Type& b){ Type tmp = a; a = b; b = tmp;}void main(){ int a = 10; int b = 20; Swap(a, b); double c = 12.34;原创 2021-03-28 22:37:17 · 35 阅读 · 0 评论 -
对于class的浅拷贝的操作方法
因为深拷贝的资源浪费,所以相对于深拷贝,我们更希望浅拷贝的形式,但是浅拷贝又会有各种改动会引起所有的值变化,所以今天参考前人创作,写出如下代码。这个是最顶部 且用来存放数据的代码区域,相当于分装。因为上篇刚写到new,所以此处用new创造空间此处放一个计数器countincrement是用来统计 如果加一个指向 则count++decrement是用来 减少一个指向 则count–class String_rep{ friend class String;public: String_r原创 2021-03-24 17:59:30 · 248 阅读 · 0 评论 -
内存管理,new,delete的分析
*short ar[100] sizeof(ar)==400; (这是一个指针数组)局部变量 函数参数 在栈 (堆栈指的在栈区)malloc和new在堆中全局变量静态变量在静态常量区(数据段)如下图new和delete操作符new 1申请空间 2.调动构造函数new会调用构造函数 malloc不会delete 1.调动析构函数 2.释放空间delete会调用析构函数 free不会new如果想创建很多个构造函数 则必须有初始值 如果想给赋值,则只能调用一次函数构造和析构必须对等/原创 2021-03-22 23:07:36 · 59 阅读 · 0 评论