首页
归档
朋友
留言
更多
关于
Search
1
2021年总结
3,701 阅读
2
大半年
3,520 阅读
3
最近的一些游戏
3,382 阅读
4
艾尔登法环
3,190 阅读
5
第一次半马
2,975 阅读
默认分类
学习
生活
游戏
小说
登录
Search
标签搜索
CPP
Git
宁滥无缺
累计撰写
54
篇文章
累计收到
10
条评论
首页
栏目
默认分类
学习
生活
游戏
小说
页面
归档
朋友
留言
关于
搜索到
54
篇与
的结果
2019-10-04
爱上火车
[Meting][Music server="netease" id="412178175" type="song"/][/Meting]花了几个月才通关8620线,当初决定每天晚上10点半小时Gal,结果到最后不是下棋LOL就是风花雪月,搞的几个月才能推完一条线。<淑女同萌>买了打了一会到现在一条线都还没推完,虽然说上班变得又忙又累,但是晚上Gal确实让人快乐而放松。只是我还没找到属于我的社畜生活的节奏。有点后悔当初摩点没有买个实体典藏版了,这一作的品质确实没的说,剧情也比上一个通的八月的作品舒服多了,尽量抽点时间把所有线全通了,挺舒服的。还是喜欢这种作品,虽然我对萝莉并无什么感觉。写于2019/8/28q通了波莱特线唤起了我最初玩Gal的那种兴奋感几乎无可挑剔,这样的作品玩的是真的舒服啊写于2019/9/16每条线剧情都不一样没有重复,虽然有点短但还是很不错了,不过买了豪华版加挂画七百多。。。肉疼,没钱了2019/10/2如果说波莱特线我给打10分,现在这个游戏顶多9分,这日日姬线什么东西,女高中生当市长,什么兄妹间突破亲情变为爱情的老套路,而且我的游戏是全年龄的,就日日姬这条线老是有裸露的画面,这种卖肉推动剧情真的是拉低了整个作品,这条线不如做点日常就好,属实败笔。2019/10/4
2019年10月04日
2,654 阅读
4 评论
0 点赞
2019-10-01
一些想法
有些愧疚今天向金皓楠借加速器,聊了一会儿,才知道他回去了,应该是退学了。。。他挂科多了留级了,本来留级不影响拿毕业证的,但是一方面培养计划改了,加了新的课程又有要重修的课程,另一方面新的政策,挂科和补考重修绩点都算上平均,平均绩点到不了2.5拿不了学位证,考虑后回去重新高考。。。我觉得可以直接考研读个硕士,本科肆业其实也没事的,但是他还是选择了这条路,感觉是白白浪费了几年青春,真的觉得可惜。想起三年前刚进学校那么欢乐,我要工作了,廖晋力考研了,他却退学了,唉。三个人在四平的那些日子依然历历在目。大二下换了宿舍之后我以为他应该也能认真学了,但今年上半年又听说他要留级了。最近十几天没看到他在线我感觉就有不好的事发生,但没想到是这种最坏的情况。虽然换寝室之后联系少了很多,但还是有时候会聊一聊。我觉得他现在这样我也有责任。当初一起玩游戏,他挂了很多科,应该早就劝劝他,最起码拿到学位证,不管是工作还是读研,将来都不会太过吃亏。我想起了初中同桌卢邦。初三下时,别人都在准备中考,因为我通过了提前录取的考试中考无所谓了,加上他手骨折了,所以老师把他安排在我的同桌让我帮他学一学。本来以他的能力,应该是能考上武中的,但那段时间我刚刚进网吧,整个人都在想LOL,经常找借口周末和他一起去网吧LOL,他也经常带我一起玩,那也是我人生的一段难忘的快乐日子。然而最后中考他没考上,花了一万多还是两万进的武中,虽然他家境挺好,但还是觉得有些愧疚。高中我们基本没怎么联系了,直到去年才聊了几句。想起曾经的那些想法,如今真的一步一步的实现了吗。但身边的人陷在了泥潭里,我却只是袖手旁观,这真的是我所希望的吗。我很害怕自己变得越来越冷漠,越来越胆小,那些很简单本可以去做的事,我没有做到,最后后悔。六年前是这样,今年还是这样。我需要更多的洞察力,我需要更多的行动,我想用自己的行动让身边的人能好一点。从几年前就这样想了,但我真的做到了吗?独立不是变得自私的借口洞察,体贴,善意
2019年10月01日
1,055 阅读
0 评论
0 点赞
2019-09-28
擅长捉弄的高木同学
[Meting][Music server="netease" id="4943674" type="song"/][/Meting] 好像一年多过去了,高木同学终于要出第二季了,一年只看一部番的我终于可以看了,漫画好久不看就是为了第二季(其实是我太懒)。高木同学第一季真的是好看啊,开头高木同学趴在桌子上的那一幕真的拨动人的心弦了啊。 其实一直对校园恋情的题材挺感兴趣的,高木同学是,爱相随是,yourdiary也算一点吧。学生时代那种纯真而有乐趣的相处真是人所向往的啊。然而我自己初中可能跟恋爱沾点边,高中完全无感。整个高中不是学习就是打游戏,其他的倒是真没想过。 感觉张入菁很像高木同学,那个鹅蛋脸和长发,难道是我对她有那么一点好感?我自己也不明白,对三次元女性都很久没什么动心的感觉,大概我的生活有游戏就够了吧。 前几天去青林派出所办身份证的那个工作小姐姐长得真漂亮,感觉像是我喜欢的类型,有点爱情公寓的秦羽墨的感觉,化了妆感觉真好看。 高木同学真好看,这部番真甜,我的青春已经快要逝去,已经没有校园恋爱了。这种快乐大概只有在这种作品中才能体会到吧,那种青涩和害羞。写于2019/7/7一年一部番,今年份的就算完成了。每看完高木同学真的是很开心啊,不管是制作的质量还是剧情都很不错。回想起17年底因为小羽去看了第一集,但是还在玩P5,然而等第二季看完我都半只脚进入社会了,时间过得是真的很快啊。最怕自己在日复一日的生活中变得麻木,gal和番剧算是丰富情感的一种手段吧,对我而言。我觉得让我情感有所变化或者是有所思考的都值得被记录,未来总有机会再回头看一看。写于2019/9/13 中秋夜看完了高木同学,感觉最近几天的笔试面试的阴霾消去了不少,舒服多了。这种感觉,青春啊,然而我已经逐渐踏上了社畜之路。除了游戏之外,还有其他很多有趣的东西,番剧,足球,佛系一点,开心就好。
2019年09月28日
1,229 阅读
0 评论
0 点赞
2019-09-27
CPP基本知识
多态性C++#include <iostream> class Person { public: virtual void BuyTicket(int) { std::cout << "Adult need Full Fare!" << std::endl; } }; class Child : public Person { public: virtual void BuyTicket(int) { std::cout << "Child Free!" << std::endl; } }; void fun(Person& obj) { obj.BuyTicket(1); } int main(void) { Person p; Child c; fun(p); fun(c); return 0; }输出Adult need Full Fare!和Child Free!调用函数就是这里的fun,参数int没有实际意义,就是为了体现函数重写必须要返回值一样、函数名一样和参数一样。被调用的函数必须是虚函数,也就是说必须要在两个产生多态的函数前面加virtual关键字。调用函数的形参对象必须是基类对象,这里是因为派生类只能给基类赋值,会发生切片操作。基类不能给派生类赋值。调用函数的参数必须是指针或引用,因为派生类改变了虚表,那么这个虚表就属于派生类对象,赋值的时候只会把基类的成员给过去,虚表指针不会给。所以在调用函数的时候会发生语法检查,如果满足多态的条件,就会触发寻找虚表中虚函数地址。如果不满足条件,则会直接用基类对象调用基类函数。不规范重写行为:就是在派生类的重写函数加了virtual关键字,但是在派生类的重写函数前不加。这样不会报错,因为继承的原因,将这个virtual的性质继承了下来,但是这样写不规范,如果两个函数构成重写,那么要在两个函数前都加上virtual关键字。2.析构函数重写问题基类中的析构函数如果是虚函数,那么派生类的析构函数就重写了基类的析构函数。这里他们的函数名不相同,看起来违背了重写的规则,其实不然,这里可以理解为编译器对析构函数的名称做了特殊处理,编译后析构函数的名称统一处理成destructor,这也说明的基类的析构函数最好写成虚函数。将析构函数定义为虚函数的原因:因为基类指针可能指向派生类,当delete的时候,如果不定为虚函数,系统会直接调用基类的析构函数,这个时候派生类就有一部分没有被释放,就会造成可怕的内存泄漏问题。若定义为虚函数构成多态,那么就会先调用派生类的析构函数然后派生类的析构函数会自动调用基类的析构函数,这个结果满足我们的本意。所以!在继承的时候,尽量把基类的析构函数定义为虚函数,这样继承下去的派生类的析构函数也会被变成虚函数构成多态。详细例子可见https://blog.csdn.net/skySongkran/article/details/82012698,重写不规范虚继承//间接基类A class A{ protected: int m_a; }; //直接基类B class B: public A{ protected: int m_b; }; //直接基类C class C: public A{ protected: int m_c; }; //派生类D class D: public B, public C{ public: void seta(int a){ m_a = a; } //命名冲突 void setb(int b){ m_b = b; } //正确 void setc(int c){ m_c = c; } //正确 void setd(int d){ m_d = d; } //正确 private: int m_d; }; int main(){ D d; return 0; }菱形继承,相同的只保留一份static使用static的作用主要有两种:第一个作用是限定作用域;第二个作用是保持变量内容持久化;c语言中static的用法:1、全局静态变量: 用法:在全局变量前加上关键字static,全局变量就定义成一个全局静态变量。 static int temp; 内存中的位置:静态存储区,在整个程序运行期间一直存在。 初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化); 作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。2、局部静态变量: 在局部变量之前加上关键字static,局部变量就成为一个局部静态变量。 内存中的位置:静态存储区 初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化); 作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域结束。但是当局部静态变量离开作用域后,并没有销毁,而是仍然驻留在内存当中,只不过我们不能再对它进行访问,直到该函数再次被调用,并且值不变;3、静态函数: 在函数返回类型前加关键字static,函数就定义成静态函数。函数的定义和生命在默认情况下都是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用;c++中static的用法: 1、类的静态成员: class A{ private: static int val; }; 在cpp中必须对他进行初始化,初始化时使用作用域运算符来标明他所属类,其属于该类的所有成员共有,只有一个拷贝; 2、类的静态成员函数: class A{ private: static int func(int x); }; 实现的时候也不需要static的修饰,因为static是声明性关键字;类的静态函数是该类的范畴内的全局函数,不能访问类的私有成员,只能访问类的静态成员,不需要类的实例即可调用;实际上,他就是增加了类的访问权限的全局函数; void A::func(int); 静态成员函数可以继承和覆盖,但无法是虚函数; 3、只在cpp内有效的全局变量: 在cpp文件的全局范围内声明: static int val = 0; 这个变量的含义是该cpp内有效,但是其他的cpp文件不能访问这个变量;如果有两个cpp文件声明了同名的全局静态变量,那么他们实际上是独立的两个变量; 4、只在cpp内有效的全局函数: 函数的实现使用static修饰,那么这个函数只可在本cpp内使用,不会同其他cpp中的同名函数引起冲突; warning:不要再头文件中声明static的全局函数,不要在cpp内声明非static的全局函数,如果你要在多个cpp中复用该函数,就把它的声明提到头文件里去,否则cpp内部声明需加上static修饰;const使用hashmap的hash冲突的几种解决办法开放定址法:线性探测再散列等链地址法:链表存储再哈希:构建多个不同哈希函数建立公共溢出区
2019年09月27日
1,037 阅读
0 评论
0 点赞
2019-09-18
二叉树三种遍历六种实现
/*二叉树的遍历* 2011.8.25*/ #include <iostream> #include<string.h> #include<stack> usingnamespace std; typedef struct node { char data; struct node *lchild,*rchild; }BinTree; typedef struct node1 { BinTree *btnode; bool isFirst; }BTNode; void creatBinTree(char*s,BinTree *&root) //创建二叉树,s为形如A(B,C(D,E))形式的字符串 { int i; bool isRight=false; stack<BinTree*> s1; //存放结点 stack<char> s2; //存放分隔符 BinTree *p,*temp; root->data=s[0]; root->lchild=NULL; root->rchild=NULL; s1.push(root); i=1; while(i<strlen(s)) { if(s[i]=='(') { s2.push(s[i]); isRight=false; } elseif(s[i]==',') { isRight=true; } elseif(s[i]==')') { s1.pop(); s2.pop(); } elseif(isalpha(s[i])) { p=(BinTree *)malloc(sizeof(BinTree)); p->data=s[i]; p->lchild=NULL; p->rchild=NULL; temp=s1.top(); if(isRight==true) { temp->rchild=p; cout<<temp->data<<"的右孩子是"<<s[i]<<endl; } else { temp->lchild=p; cout<<temp->data<<"的左孩子是"<<s[i]<<endl; } if(s[i+1]=='(') s1.push(p); } i++; } } void display(BinTree *root) //显示树形结构 { if(root!=NULL) { cout<<root->data; if(root->lchild!=NULL) { cout<<'('; display(root->lchild); } if(root->rchild!=NULL) { cout<<','; display(root->rchild); cout<<')'; } } } void preOrder1(BinTree *root) //递归前序遍历 { if(root!=NULL) { cout<<root->data<<""; preOrder1(root->lchild); preOrder1(root->rchild); } } void inOrder1(BinTree *root) //递归中序遍历 { if(root!=NULL) { inOrder1(root->lchild); cout<<root->data<<""; inOrder1(root->rchild); } } void postOrder1(BinTree *root) //递归后序遍历 { if(root!=NULL) { postOrder1(root->lchild); postOrder1(root->rchild); cout<<root->data<<""; } } void preOrder2(BinTree *root) //非递归前序遍历 { stack<BinTree*> s; BinTree *p=root; while(p!=NULL||!s.empty()) { while(p!=NULL) { cout<<p->data<<""; s.push(p); p=p->lchild; } if(!s.empty()) { p=s.top(); s.pop(); p=p->rchild; } } } void inOrder2(BinTree *root) //非递归中序遍历 { stack<BinTree*> s; BinTree *p=root; while(p!=NULL||!s.empty()) { while(p!=NULL) { s.push(p); p=p->lchild; } if(!s.empty()) { p=s.top(); cout<<p->data<<""; s.pop(); p=p->rchild; } } } void postOrder2(BinTree *root) //非递归后序遍历 { stack<BTNode*> s; BinTree *p=root; BTNode *temp; while(p!=NULL||!s.empty()) { while(p!=NULL) //沿左子树一直往下搜索,直至出现没有左子树的结点 { BTNode *btn=(BTNode *)malloc(sizeof(BTNode)); btn->btnode=p; btn->isFirst=true; s.push(btn); p=p->lchild; } if(!s.empty()) { temp=s.top(); s.pop(); if(temp->isFirst==true) //表示是第一次出现在栈顶 { temp->isFirst=false; s.push(temp); p=temp->btnode->rchild; } else//第二次出现在栈顶 { cout<<temp->btnode->data<<""; p=NULL; } } } } void postOrder3(BinTree *root) //非递归后序遍历 { stack<BinTree*> s; BinTree *cur; //当前结点 BinTree *pre=NULL; //前一次访问的结点 s.push(root); while(!s.empty()) { cur=s.top(); if((cur->lchild==NULL&&cur->rchild==NULL)|| (pre!=NULL&&(pre==cur->lchild||pre==cur->rchild))) { cout<<cur->data<<""; //如果当前结点没有孩子结点或者孩子节点都已被访问过 s.pop(); pre=cur; } else { if(cur->rchild!=NULL) s.push(cur->rchild); if(cur->lchild!=NULL) s.push(cur->lchild); } } } int main(int argc, char*argv[]) { char s[100]; while(scanf("%s",s)==1) { BinTree *root=(BinTree *)malloc(sizeof(BinTree)); creatBinTree(s,root); display(root); cout<<endl; preOrder2(root); cout<<endl; inOrder2(root); cout<<endl; postOrder2(root); cout<<endl; postOrder3(root); cout<<endl; } return0; } //深度遍历用栈,广度遍历用队列
2019年09月18日
1,009 阅读
0 评论
0 点赞
1
...
6
7
8
...
11