首页
归档
朋友
留言
更多
关于
Search
1
2021年总结
3,682 阅读
2
大半年
3,499 阅读
3
最近的一些游戏
3,364 阅读
4
艾尔登法环
3,171 阅读
5
第一次半马
2,962 阅读
默认分类
学习
生活
游戏
小说
登录
Search
标签搜索
CPP
Git
宁滥无缺
累计撰写
53
篇文章
累计收到
8
条评论
首页
栏目
默认分类
学习
生活
游戏
小说
页面
归档
朋友
留言
关于
搜索到
53
篇与
的结果
2019-06-22
字符串匹配的KMP算法
https://www.cnblogs.com/ZuoAndFutureGirl/p/9028287.html常规的字符串匹配是首字符相同逐一比对,若不同则回退到第一个字符的下一个继续比对。思想比较简单,效率比较低。KMP算法则是比对后若有不同则根据不同字符之前的字符串的前后缀相同字符个数为k,匹配字符串向后移动j-k,j为字符个数。next数组存放的是-1和k形成的数组右移一位的结果。还没有时间细看next数组的递归计算,这篇文章思想还是解释的比较清楚的。
2019年06月22日
1,291 阅读
0 评论
0 点赞
2019-06-19
用VECTOR实现静态链表
#include <stdio.h> #include<iostream> #include <vector> #define max 100 using namespace std; struct node { int data; int cur; }; vector<node> list; //初始化链表 void InitList(vector<node>&list) { list.resize(max); list[max - 1].cur = 0; for (int i = 0; i < max - 2; i++) { list[i].cur = i + 1; } list[max - 2].cur = 0; } //求静态链表中元素个数,不包括头尾节点 int ListLength(vector<node>list) { int i = list[max- 1].cur; int j = 0; while (i) { j++; i = list[i].cur; } return j; } //插入元素时,分配空间的下标 int Malloc(vector<node>&list) { int i = list[0].cur; if (i) list[0].cur = list[i].cur; return i; } //插入元素 bool ListInsert(vector<node>&list,int i,int key) { if (i<1 || i>ListLength(list) + 1) return false; int j = Malloc(list); int k = max - 1; if (j) { for (int l = i; l <= j-1; l++) { k = list[k].cur; } list[j].data = key; list[j].cur = list[k].cur; list[k].cur = j; return true; } } //删除第i个元素,key值改变 bool ListDelete(vector<node>&list, int i, int* key) { if (i < 1 || i >= ListLength(list)) return false; int k = max - 1; for (int l = 1; l <= i - 1; l++) k = list[k].cur; int j =list[k].cur; *key = list[j].data; list[k].cur = list[j].cur; list[j].cur = list[0].cur; list[0].cur = j; return true; } //查找key int ListSearch(vector<node>list, int key) { int i = list[max - 1].cur; while (list[i].data != key) i = list[i].cur; return i; } //遍历 void ListPrint(vector<node>&list) { int k = max - 1; while (list[k].cur) { k = list[k].cur; cout<< (list[k]).data<<'\t'; } printf("\n"); } //测试 int main() { InitList(list); ListInsert(list, 1, 1); ListInsert(list, 1, 2); ListInsert(list, 1, 3); ListInsert(list, 1, 4); ListInsert(list, 1, 5); ListPrint(list); cout << endl; int key; ListDelete(list,2,&key); cout << "删除的元素值是" << key << endl; ListPrint(list); cout << endl; int x; x=ListSearch(list, 3); if (x) cout << "这是第" << x << "个元素" << endl; else cout << "Error" << endl; getchar(); return 0; }
2019年06月19日
1,243 阅读
0 评论
0 点赞
2019-06-18
浅淡C/C++中的typedef和#define
在C/C++中,我们平时写程序可能经常会用到typedef关键字和#define宏 定义命令,在某些情况下使用它们会达到相同的效果,但是它们是有实质性的区别,一个是C/C++的关键字,一个是C/C++的宏定义命令,typedef 用来为一个已有的数据类型起一个别名,而#define是用来定义一个宏定义常量。下面谈谈两者在实际使用中应当注意的地方。1.typedef关键字typedef是用来声明类型别名的,在实际编写代码过程使用typedef往往是为了增加代码的可读性。它可以为一串很长的类型名起一个别名,那么使用这个别名可以达到与原类型名相同的效果。如:typedef int INT; typedef char CHAR;就为int和char分别起了一个别名,那么在程序中使用INT a;和int a;达到的效果是等同的。在使用typedef时应注意一下几点:1)typedef是为一个数据类型起一个新的别名,如typedef int INT;那么要告诉我的是INT表示整型,typedef int* INTPTR;则告诉我们INTPTR是一个指向整型变量的指针类型,这点与#define是决然不同的,#define只是作简单的字符串替换,不表达 任何含义。如:#define INTPTR1 int* typedef int* INTPTR2; INTPTR1 p1,p2; INTPTR2 p3,p4;INTPTR1 p1,p2;和INTPTR2 p3,p4;这两句的效果决然不同。INTPTR1 p1,p2;进行字符串替换后变成int p1,p2;要表达的意义是声明一个指针变量p1和一个整型变量p2;而INTPTR2 p3,p4;由于INTPTR2是具有含义的,告诉我们是一个指向整型数据的指针,那么p3和p4都为指针变量,这句相当于int p1,*p2;从这里可以看出,进行宏替换是不含任何意义的替换,仅仅为字符串替换;而用typedef为一种数据类型起的别名是带有一定含义的。再看下面这个例子:#define INTPTR1 int* typedef int* INTPTR2; int a=1; int b=2; int c=3; const INTPTR1 p1=&a; const INTPTR2 P2=&b; INTPTR2 const p3=&c;上述代码中,const INTPTR1 p1表示p1是一个常量指针,即不可以通过p1去修改p1指向的内容,但是p1可以指向其他内容;而对于const INTPTR2 p2,由于INTPTR2表示是一个指针类型,因此用const去限定,表示封锁了这个指针类型,因此p2是一个指针常量,不可使p2再指向其他的内容, 但可以通过p2修改其当前指向的内容,INTPTR2 const p3同样声明的是一个指针常量。2)对于宏定义:#define INT int unsigned INT a;这种用法是可行的;而typedef int INT; unsigned INT a;是绝对错误的用法。2.#define宏定义\#define是一个宏定义命令,用来定义一个常量(包括无参常量和有参常量),它本身并不在编译过程中执行,而是在预处理阶段就已经完成了,因此不作任 何正确性检查,只进行不关含义的字符串替换。在使用宏定义时,如果稍不注意就会发生错误,而且这个错误往往是你意想不到的。如:#define ADD(a,b) a+b int i=1; int j=2; int k=3; int s=ADD(i,j)*k;程序可能想求算的是(i+j)k的结果,然而这段程序并没有达到这种效果,由于宏替换只是进行简单的字符串替换,那么add(j+k)k相当于i+jk,并不是想象中的(i+j)k。
2019年06月18日
998 阅读
0 评论
0 点赞
2019-06-17
关于char数组用strcpy
#include <iostream> #include <string> using namespace std; class student { private: char name[10]; public: student(const char nam[]) { strcpy(name, nam); } char *get_name(void) { return name; } }; int main() { student s("hello"); char *p; p = s.get_name(); cout << p; system("pause"); return 0; }会提示strcpy使用有问题改为使用strcpy_s。解决方法:1)根据warning,第一个方法,该strcpy为strcpy_sstrcpy_s定义:errno_t __cdecl strcpy_s(_Out_writes_z_(_SizeInBytes) char Dst, _In rsize_t SizeInBytes, _In_z const char _Src);注意strcpy_s中多了第二个参数,限制复制字符串的长度,避免越界。微软的警告,主要因为那些C库的函数,很多函数内部是不进行参数检测的(包括越界类的),微软担心使用这些会造成内存异常,所以就改写了同样功能的函数,改写了的函数进行了参数的检测,使用这些新的函数会更安全和便捷。关于这些改写的函数你不用专门去记忆,因为编译器对于每个函数在给出警告时,都会告诉你相应的安全函数,查看警告信息就可以获知,在使用时也再查看一下MSDN详细了解。2)根据warning,第二个方法,To disable deprecation, us _CRT_SCURE_NO_WARNINGS. 找到项目--属性--配置属性--C/C++--命令行--其它选项 中填上【 /D "_CRT_SECURE_NO_DEPRECATE"】(注:中括号中的全部内容)。或者 在源程序一开始 加上#pragma warning(disable : 4996)strcpy_s和strcpy()函数的功能几乎是一样的。strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串。在程序运行时,这将导致不可预料的行为。用strcpy_s就可以避免这些不可预料的行为。这个函数用两个参数、三个参数都可以,只要可以保证缓冲区大小。另外student类s初始化时hello传递的是一个const char[6],构造函数或者strcpy第二个参数需要的也是指向字符串首地址的常指针。
2019年06月17日
1,070 阅读
0 评论
0 点赞
2019-06-14
间客
回到豪华的顶层套间中,没有任何外人,钟烟花也没有必要再给许乐留一丝一毫的面子,她站在沙发前,双手扶着细细的腰,向前低着头,颇有意趣地看着他,黑色秀发垂在浅浅隆起的胸前,目光逼人青春逼人。喝多了酒的许乐有些渴有些迷糊,眯着眼睛看着近在眼前的清秀小脸蛋,隐隐约约间觉得要出什么大事。“哥!”钟烟花扶着脸,盯着他的脸,大声喊叫道:“在帝国的时候你说我总有一天要和别的男生谈恋爱的,那为什么你刚才要打他,为什么要管我谈恋爱!”许乐有些语塞,为了掩饰尴尬从桌旁倒了杯清水,极缓慢地喝光,然后发现少女还是保持着那个低头问罪的姿式,于是极为老实地挪了回去,挪到她目光之下。“这个事情是这个样子的。”他想了想后试图解释道:“谈恋爱肯定是要谈的,但你得找个合适的对象,那个小屁孩叫林惜花对吧?别看他长的周整,你用脑子想想就知道,这种环境下长大的男人,脑子里除了合成肉就没别的东西。他父亲虽然是个了不起的人物,但他将来顶多当个黑帮头子,做为你的法定监护人,我可不允许这种事情发生。”很难得的长篇大论,被钟烟花酷意十足的一句话就打了回来:“你最好的朋友也就是个黑帮头子。”许乐伸手把少女垂在自己面前的发丝拨开,看着那张满是恚怒意味的清秀小脸,艰难说道:“你现在年纪还太小,就算想谈恋爱,也必须过十六岁,不,过了十八岁才允许谈,当然对方必须经过我审核。”钟烟花站直身体,看着他冷笑两声,说道:“不让我谈恋爱,哥你就是想把我捆在身边。”许乐恼火说道:“瞎说什么呢?”钟烟花指尖微翘点他:“刚才的表现说明你在吃醋。”“你这个丫头真是疯了。”许乐嘲笑道。钟烟花脸上的酷劲儿早就消失无踪,甜甜说道:“你就是吃醋,你看见别的男生牵我的手你心里就不高兴。”许乐看着少女脸上愉悦绽放的甜美笑容,眉头缓缓蹙了起来,摊手说道:“如果你爸活着,刚才也不会高兴。”钟烟花根本不理会他的解释,格格一笑像小鸟飞回林巢般扑进沙发,舒服地偎在他的怀里,甜美说道:“哥,你就承认喜欢我吧,我们又没真的血缘关系,不丢人。”嗅着鼻端处飘来的淡淡香气,感受着怀里的青春身躯,像小时候那般许乐轻轻抱着她,忽然发现菲利浦这几年弄的营养搭配比确实很棒,怀里的小姑娘进入青春期之后的发育不错,嫩嫩的软软的暖暖的。许乐骤然醒了过来,发现先前那刻恍神有些问题,皱着眉头把她沙发上,说道:“大姑娘了也不嫌丢人。”“对啊,我都不怕丢人,你有什么好怕的!”钟烟花恼怒地把头发挥到肩后,看着他说:“当年在空港雨里你牵我的手,在山里你牵我的手,在飞船上你还抱过我,在游乐场里你也抱过我,我知道那时候我是小女生,所以你可以牵。”“现在呢?我一天一天长大,你很少再牵我的手,更不肯再抱我,我不喜欢这样,我宁肯自己还没长大。”钟烟花的眼圈微红,看着他强自平静说道:“可人总是要长大的,我不怕丢人,我就喜欢抱着你。”许乐无助地摊开双手,想要说些什么却不知道该说什么好,只好轻轻叹息了一声。“我喜欢你。”钟烟花用发誓一般的语气,肯定而坚定说道:“我也知道你喜欢我,不管你因为怕被人说闲话,还是被你脑子里那些迂腐甚至愚蠢的恋爱婚姻观压的不敢承认。”“你别想拒绝我,因为这个世界上只有你看过我的**,从小到大你记不记得你给我洗过多少次澡?借着洗澡的机会你明目张胆把我全身看光光多少次?”钟烟花勇敢地盯着许乐的眼睛,滑嫩白洁的脸颊上,露出两抹羞涩的红晕,就像枝头鲜嫩的苹果。“哥你给我梳过头,给我洗过小*,甚至就连我来初经的时候都是你在我身边,直到今天我还记得你的手放在我的小腹上是那么的暖和。”“我的爸爸妈妈都死了,这个世界上我只有你一个亲人了,但哥你并不是我的亲哥哥,所以你必须对我负责,你必须要娶我。”许乐在宇宙最粗神经最坚毅石头精神的支撑下,勉强听完少女羞涩而勇敢的告白,傻傻的愣了半天,忽然想明白了这件事情,用力挥舞着手臂*道:“给你洗澡的时候你才五岁!那个晚上还有商秋!”“小时候就说过,我喜欢商秋,我不介意她当*。”钟烟花甜甜一笑,明亮双眸笑成两眉弯月,然后微微抬起下颌,骄傲而冷酷质问道:“五岁的事情就不用负责?还是说我现在十五岁了你就可以不管我了?”许乐了她的脑袋,苦笑说道:“乖,你知道自己已经有多少个嫂子,这次回去如果我死不了,麻烦事儿还在后面,你就把哥当mx的废弃油放了好不好?”“就是因为马上要回联邦,要看到那些女人,我才着急,我又要回西林,谁去看着你们?”钟烟花恼怒地从他魔掌下摆脱,抬起白袖抹掉脸颊上的泪痕,喊道:“最好你回联邦发现她们都嫁了人。”“那样……”许乐本想说那样最好,临出双唇时,却下意识里变成一声感慨:“不大好吧?”钟烟花忽然抬起头来,极为严肃认真地望着他,沉默片刻说道:“哥,这次回联邦真的很危险,你真有可能会死,在死之前你能不能答应我最后一个愿望?”“不要。”许乐毅然决然说道。钟烟花恼火地拿起抱枕,遮着自己滚烫的小脸,嗡声嗡气*道:“我鼓起很大勇气才说出口,你又不知道我最后愿望是要当你的女人,为什么要说不要?”许乐看着抱枕后面偷偷眨着的眼睛,感觉这才是那个可爱的小姑娘,笑着说道:“因为小爷我永远不死。”钟烟花扔掉抱枕,嘲讽道:“只会抄你老师的名言。”…………“哥,你小时候在东林住的地方是叫钟楼街吧?”“是。”“你知道钟楼街为什么叫那个名字吗?”“因为当年人类社会拓荒时,执行任务的第四军区,主战舰莫名其妙坠毁,只剩下一个仿古钟。”钟烟花可爱地点着自己的翘鼻尖,说道:“第四军区指挥官是我祖先噢,很巧吧?”听到这句话,许乐这才发现多年来一直没有想到,原来钟楼街名字来源的故事,竟和西林钟家有关。“我还知道先祖看着战舰坠毁时的爆炸画面,曾经说过一句话,后来成了你们东林人用来装酷的名言。”许乐微笑复述道:“我的心情比烟火还要寂寞。”钟烟花挪动身体,趴在他的胸口,隔着极近的距离,看着他的脸,说道:“我就叫钟烟花。”许乐感受着怀里传来的少女心跳声,问道:“然后呢?”“东林和西林隔着无数星河,分别在宇宙两边相望,遥远的不能再遥远,然而奇妙的是,我们两个人生活的地方还有那些故事,之间仿佛都有联系。”“这种联系很强大,强大到我小时候在古钟号上第一个遇见的人,不会是别人,只能是你。”“一个大逃犯遇到一个小逃犯……这是命运的安排,哥,这种事情是你躲不开避不了的。”钟烟花靠着他坚实的胸膛,闭着眼睛缓缓说着,因为太过疲倦的缘故,挂着泪痕就这般沉沉睡去。许乐默默看着怀里的小姑娘,想起多年前星光下抱着娃娃的白衣女童,不禁有些惘然,原来一晃已是十年。套房温度调的比较低,钟烟花的手感觉到一丝凉意,在睡梦中下意识里伸进许乐领口中,贴在他暖和结实的胸膛上,然后像贪玩的猫般轻轻挠了挠。大概是手感和温度都不错的缘故,少女唇角微翘,露出满足而甜美的笑容。许乐看着她脸上的笑容,自己也忍不住微微笑了起来,低声说道:“你十岁的时候我就在想,今后肯定会有很多满脸青春痘的讨厌小男生来追你。”他抽出压麻的手臂,轻轻活动手指,念头微动用指尖在钟烟花清细的眉毛上缓缓画过,沉默很长时间后,平静说道:“如果你还醒着,听到这句话可能会开心。”“当时想像那种画面,我就非常不开心,但我必须承认和先前那刻看到画面时的不开心,确实不同。”因为酒喝的太多,听了太多让自己无处应对的少女告白,许乐的脑袋也有些昏沉,取过抱枕垫在自己颈后,看了十几秒钟天花板,便安静睡去。第二日清晨,淡蓝色的恒星光芒穿透防弹玻璃,占据房间里每个角落,在沙发上那对兄妹身体缓慢洒落。两个人几乎同时醒了过来,钟烟花发现自己左手正在许乐怀里舒服地抚摩,羞怯地赶紧抽了出来,然后腆着脸嘿嘿一笑,*着满头乱发就冲进了洗手间。许乐站起身用力伸展双臂,排去昨夜的酸涩,然后看了一眼洗手间紧闭的门,微笑想着,看小姑娘的表情呆会儿就应该冲出门来,扶着腰羞着脸让自己忘记昨天她曾经说过的所有话,不准再想起。他感慨想道,昨夜听到的那些话,就当成生命里美好却只能静静聆听无法握住的美妙音符吧。半小时后,钟烟花梳洗完毕,然后走出洗手间,没有任何犹豫,直接走到许乐身前。浅米色小风衣将少女的腰线修饰的非常迷人,她脸上竟罕见的上了极淡的妆容,眉眼显得格外清丽漂亮,双手紧张握在身旁的她,望着许乐极为认真说道:“对于哥来说,昨天讲的事情大概只是生命中的插曲,但请你一定要记住,这肯定会是我生命的主旋律。”看着紧闭的房门,想着女孩儿离开之前的宣言,淡蓝光线中的许乐身体无比僵硬,依旧滑稽可笑地保持着举臂向上的姿式,在这一刻他甚至觉得自己已经忘了封余大叔教给自己的那些动作是什么。就在他变成一座石雕的时候,耳朵里那粒金属片停止很长时间的振动再次到来,变成清晰的声音,通过耳膜传进他的大脑,只是今天这声音显得情绪相当丰富。…………(这段情节我是真不擅长写,写了整整一夜,快写死我了,但又不得不写,因为间客从 钟楼街,包括那句被无数人嘲讽小资到恶俗的比烟花寂寞,都是为了钟烟花,这本书对于我来说,女主角从来都是钟烟花,没有改变过。和养成什么无关,和我爱好有关,我最喜欢的就是非血缘关系铁密兄妹情感关系,这应该是当年受蓝色生死恋的影响,映秀写过,庆余年写过,间客也要写,下本书我将会正式大写特写。不过小西瓜确实太小了,而且我真不擅长写这些,所以这夜苦苦煎熬时,脑海里总想起夏花娘的重生之心动,佩服佩服。当初看间客的时候是真的喜欢钟烟花(难道是因为萝莉养成加倒贴?)高中唯一被停课的时候就是重看间客,恍然都过去那么多年了。一些情节还是挺印象深刻的,虽然故事现在看来比爽文也高不了太多。不知道为什么这一章就是很有画面感。“老子此刻的心情,比烟花还要寂寞”
2019年06月14日
1,111 阅读
0 评论
0 点赞
1
...
8
9
10
11