![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
编程萝卜
这个作者很懒,什么都没留下…
展开
-
c++ 中有静态指针成员的链表析构出现的问题
静态指针所指向的对象固定最后析构,自己写的代码中不要进行析构,不然析构两次原创 2014-06-17 00:30:30 · 563 阅读 · 0 评论 -
课程设计SNL语言词法/语法分析中遇到的坑
在文件指针指向EOF时,seekg()函数已经不好用了,可以in.clear()清除流,或者找别的方法解决。不要相信书上的predict集合,很多坑等着你跳。使用Boost库,好多好用的轮子。最好不要using namespace xxx;文件用完一定要in.close(),不然就算直接打开别的文件,in这个文件指针也会有问题。原创 2016-06-12 10:02:47 · 3473 阅读 · 2 评论 -
二项队列 C++实现
二项队列是比左式堆与斜堆更好的选择。二项队列不是一棵树,是由堆序的集合组成的,成为森林。堆序中每一颗树都有约束,都为二项树,每一个高度只有一个二项树,每层的高度由两个下一层高度的树组成。B1= B0 + B0。 二项队列的合并是相同高度的二项树合并,并且insert与deleteMin都是依靠合并这个操作实现的。原创 2016-05-08 10:30:52 · 1005 阅读 · 0 评论 -
优先队列(堆)笔记 c++
当队列中某个对象优先级比其他对象更高时候,需要比其他对象先出队列而不管所在的位置时候,需要使用优先队列。 有如下的实现方法 - 插入在对尾,出队时候遍历整个队列 - 插入时即进行排序,出队时候固定在队首或者对尾 - 使用二叉查找树 - 使用二叉堆 往往在最后的最重要堆是完全二叉树,使用数组就可以很好的实现。(vector更好,不需要再扩容)template <typename T>原创 2016-05-06 21:24:31 · 804 阅读 · 0 评论 -
希尔(Shell)排序 C++
希尔排序是一个很有意思的排序算法,就是在选择不同的增量序列时算法的效率会有显著的不同。更有意思的是它和Dijkstra算法都有相似之后,就是刚发明的时候并不知道有那么厉害(特别是Dijkstra,自己都不知道自己发明的这个算法有没有用)。希尔排序使用一个叫做增量序列的数组,这个数组保证第一个元素为1,后面的元素比前面的元素大就好了,但是不一样的数组有着不一样的效率,所了解比较好的增量序列是Sedg原创 2016-05-17 15:37:40 · 418 阅读 · 0 评论 -
hashtable笔记 c++
使用了STL中的vector、listtemplate <typename T>class HashTable{public: explicit HashTable (int size = 101); bool contains ( const T & t) const { return find(lists[myhash(t)].begin(), l原创 2016-05-05 19:57:23 · 977 阅读 · 0 评论 -
STL中插入排序的实现
虽然大二时已经学习了几种排序算法,但是所选教材对算法的讲解不时很详细,相关的优化也没有说明,都是比较基础的实现,所以找了本书重新看了下。插入排序在STL中是接收Iterator来排序的,不是操作一个向量或者数组的(虽然这样更简单)。插入排序是N-1趟扫描来完成具体的排序,在第p次扫描后,0—p的位置都已经排序好了。插入排序在每次扫描时,检查这时的p位置元素,从后往前查询,如果后面的元素小于或大于原创 2016-05-17 10:18:09 · 1474 阅读 · 0 评论 -
setsockopt()和getsockopt()函数—-解决地址不可复用,即Address already in use
转载:http://blog.163.com/xychenbaihu@yeah/blog/static/1322296552011215111017599/ Linux所提供的socket库有一个错误(bug);此错误表现为你不能为一个套接字重新启动同一个端口号。 即:比如一个程序,在IP”192.168.1.234″和Port”12357″上创建了一个套接字。启动程序后,转载 2016-04-19 18:58:08 · 939 阅读 · 0 评论 -
Window下c++原始套接字来截包
最近要交这个作业,紧赶慢赶写出来了,不过写出来后有时候好用有时候不好用,真是醉了,原来是获取本地IP地址时候多块网卡,有时候IP就获取错了,所以运行时最好先看看是哪块网卡,对应的IP对不对。// WinSocketRaw.cpp : 定义控制台应用程序的入口点。//#include <iostream>#include "winsock2.h"#pragma comment(lib, "ws2原创 2016-04-19 18:54:18 · 1269 阅读 · 0 评论 -
basic_string::_S_construct NULL not valid
错误信息为:一个实例化的逻辑错误导致程序中止.在what()函数中不能使用NULL来构造basic_string的对象.下面是 错误 用法的演示:============================#include using namespace std;void main(void){ //string a(NULL);//错误用法 //string b = NULL转载 2014-05-24 20:24:06 · 11640 阅读 · 1 评论 -
C++ 语言宏定义函数的使用(定义单行和多行)
昨天笔试问的,不会…..在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。宏定义中允许包含两行以上命令的情形,此时必须在最右边加上”\”且该行”\”后不能再有任何字符,连注释部分都不能有,下面的每行最后的一定要是”\”,”\”后面加一个空格都会报错,更不能跟注释。 我们来看一转载 2016-04-25 15:54:46 · 15977 阅读 · 2 评论 -
c++ 调用Python接口小问题
Q1:无法调用三方库? A1://换成你自己的PYTHONPATH,Mac并且用brew安装的不用换了PyRun_SimpleString("sys.path.append('/usr/local/lib/python2.7/site-packages')");Q2:Python脚本文件放在哪? A2:随意你喜欢的地方,pName = PyString_FromString(“”);是用imp原创 2017-10-12 23:58:37 · 956 阅读 · 0 评论