@iwktd981220
2017-11-17T10:06:46.000000Z
字数 3086
阅读 663
作业笔记
throw_try_catch
nullptr_0_NULL
delete_c++
关于堆栈的三种含义
貌似堆和栈不仅是push和pop方向有点区别,事实上很多地方都有区别。
堆栈之间的区别
貌似用数组并不存在delete这种释放
实现方式:使用数组或者链表。
实现方式:数组、链表、
老铁,貌似这个是有点问题的,并不可以拿来参考喔0.0
这个也不算有问题吧,缺了点东西而已
在写的过程中:
1. 原来可以把链表的结构体写在类当中....可怕的类
2. 每一个成员函数都要记得写模板:template
3. 要如何正确处理head和tail是完成队列的一个重点。
2017.11.17
哇!又一次感受到了自己这方面的缺失,比如什么函数复用:isEmpty()的使用啊!以及逻辑上的问题...下次做作业的时候不能够单单是按照印象来写,最好还是写完以后,按照实验的需要一个一个步骤表现出来,写多了以后再省略这一步,不然真的....逻辑漏洞挺多的...存在无法解决的逻辑判断的话,问问金稳吧orz
另外一个问题是,盲目借书,明明clrs上面是由关于栈队列的内容的,但是自己却去借书,还好借的书还好。
来说说一个报错的方式吧!throw try catch
相关描述:其中关键字try表示定义一个受到监控、受到保护的程序代码块;关键字catch与try遥相呼应,定义当try block(受监控的程序块)出现异常时,错误处理的程序模块,并且每个catch_block都带一个参数(类似于函数定义时的数那样),这个参数的数据类型用于异常对象的数据类型进行匹配;而throw则是检测到一个异常错误发生后向外抛出一个异常事件,通知对应的catch程序块执行对应的错误处理。
个人理解:
感觉信息量挺大的,留着参考
另外一个就是使用nullptr 来定义空指针报错
nullptr was not declared in this scope
使用:
g++ -std=gnu++0x *.cpp
原因:c++ 11的特性,需要更新编译器
解决方法:直接把它改成0或者NULL,或者更新编译器(不推荐)参考
更多关于nullptr、0和NULL的参考链接
在了解销毁的过程中,了解到那个数组是并不用delete
的,而new的那个就需要delete
胡乱delete
就会出现:
*** glibc detected *** ./a.out: free(): invalid pointer: 0xb76617b4 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x73e42)[0xb7533e42]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x1f)[0xb772d51f]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZNSs4_Rep10_M_destroyERKSaIcE+0x1b)[0xb771499b]
/usr/lib/i386-linux-gnu/libstdc++.so.6(+0x909dc)[0xb77149dc]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZNSs6assignERKSs+0x98)[0xb7716478]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZNSsaSERKSs+0x23)[0xb77164c3]
./a.out[0x8048e51]
./a.out[0x8049594]
./a.out[0x8048fb8]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xb74d94d3]
./a.out[0x8048d21]
======= Memory map: ========
08048000-0804a000 r-xp 00000000 07:00 785817 /home/brianjustice/CS/a.out
0804a000-0804b000 r--p 00001000 07:00 785817 /home/brianjustice/CS/a.out
0804b000-0804c000 rw-p 00002000 07:00 785817 /home/brianjustice/CS/a.out
0817b000-0819c000 rw-p 00000000 00:00 0 [heap]
b7492000-b7494000 rw-p 00000000 00:00 0
...`中间省略`
b779d000-b779e000 rw-p 00020000 07:00 267748 /lib/i386-linux-gnu/ld-2.15.so
bf968000-bf989000 rw-p 00000000 00:00 0 [stack]
Aborted (core dumped)
关于delete
的用法:cplusplus