![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 63
ygqwan
这个作者很懒,什么都没留下…
展开
-
++ ,-- 运算符
看下面程序:#include #include #include using namespace std;int main(){ int a,b; int i=2; cout<<--i++<<endl;}请问结果是多少呢? vc6.0 中编译: 由于++,--运算符具有右结合性,那么等价于--(i++),就是说先得到两步:1.--(2) , 2. i原创 2013-01-06 16:49:52 · 686 阅读 · 0 评论 -
用快速排序找中位数
这个很好理解, 就像找前K个数一样, 这个就像找前n/2个数, 不过这里说只是要中位数就没有必要找完了, 于是就可以大规模的剪枝;剪枝方法就是递归的时候对不可能有中位数的区间就直接减掉, 这个可是很大的一个剪枝, 效率急速上升#include #include #include using namespace std;const int mmax = 10000001;int a[原创 2013-12-20 10:39:03 · 8784 阅读 · 3 评论 -
C++ 写栈 和 队列
栈的代码, 比较容易实现:#include #include #include #include #include using namespace std;class Point{public: int x, y; Point(int x, int y):x(x), y(y){} Point(){}};templateclass Stack{public: Sta原创 2013-12-20 12:07:53 · 1046 阅读 · 0 评论 -
深搜之回溯法总结
回溯法是个好东西, 当自己对一个问题没有任何思路的时候就可以用回溯法, 虽然效率是一个严重的问题, 但是却能给问题一个形象的解释, 或者可以从回溯法想到一个不错的算法也不一定当遇到一个可以用到回溯法的时候需要按照如下步骤进行:1. 确定问题的一个解空间树, 这个解空间树至少包含一个你需要的那个解, 否则这个树就完全没有意义了2. 组织好这棵树, 弄明白这棵树的每一个节点代表什么原创 2013-11-10 22:04:55 · 2586 阅读 · 0 评论 -
c++ 里面由浅拷贝引起的悬挂指针
悬挂指针一般是由于指向该地址的指针突然指向了别的地方, 但是在改变这个指向之前没有对该地址里面的内容撤销, 导致该内从地址里面的数据没法再被使用但同时却一直存在, 造成内存泄露这里讨论的是浅拷贝引起的悬挂指针问题, 浅拷贝一般是自己没有定义拷贝构造函数和重载 = 引起的, 所以当你的类中有了指针或者数组的时候一定要自定义上面的两个函数, 当然类中有自定义类型的时候也要注意用上免的两个函原创 2013-11-22 15:08:24 · 1511 阅读 · 1 评论 -
函数重载与默认参数小结
引入为什么要函数重载?这个问题其实就是为了解决函数名字的冲突问题,因为假如有一个方法是动作洗, 那么如果是洗车洗衣服洗袜子都得是具体的名字, 这样多不好呀!必然性:名字写得烦也就算了,不是必然性的, 但是构造函数的实现,如果要需要实例化多重或者是多类的实例怎么办,一样得必须重载 为什么不能用返回值重载?这个问题的答案就是一般编译器内部都会将函数重新取一个名字,常用方原创 2013-08-10 02:03:17 · 1085 阅读 · 0 评论 -
c/c++ 调试技巧小结
在c/c++中没有像c#/java那样强大的异常机制, 程序出了问题怎么办呢? 作为一个程序员呢,感觉是一小半的时间是在写代码,而一大部分的时间却一头扎在代码的雾水中,不断的debug, 辛苦呀, 今天我总结一下一些简单的调试技巧吧技巧一:输出调试, 这个不用说了吧,也算不上技巧, 就是将想知道的数据直接输出来, 优点是灵活有针对性,但是太麻烦了技巧二:调试标记法, 这个方原创 2013-08-02 00:32:18 · 1217 阅读 · 0 评论 -
关于引用的指向的 问题小解
看下面这段代码:#include using namespace std; int main(){ int value1=1; int value2=2; int &p=value1; //p=value2; cout<<value1<<endl; cout<<value2<<endl; cout<<p<<endl; return 0;}这个时候可能你原创 2013-01-06 15:41:31 · 591 阅读 · 0 评论 -
c++ 类的大小问题
先看一段代码#include #include #include #include struct A{ double b; //int c ; double d; int a; int f; int t; char g; char g1; char g3; int vv; char g4; //char g5;};class X{ double原创 2013-09-07 01:29:11 · 677 阅读 · 0 评论 -
不用循环, 判断,三元运算法, 选择求1 + 1 + ..100
用了两种方法:#include #include #include using namespace std;class te{public: static int cnt; static int sum; te() { cnt++; sum += cnt; } int static getSum() { return sum; }};i原创 2013-08-26 19:25:53 · 1190 阅读 · 0 评论 -
构造函数初始化列表
class Object{public: Object() : v2(5), v1(v2 * 3) { … }private: int v1, v2;}看看愿意是 先初始化v2为5, 然后初始化v1为 3 倍的 v2但是结果却是奇葩的, 这个是因为构造函数的初始化列表遵循的原则是先初始化父类(父类也是这个原则, 那么就相当于递归),然后初始化本类的成员, 最原创 2013-08-21 17:15:02 · 783 阅读 · 0 评论 -
poj 2243 a星搜索
a星算法我不介绍了,参考这个链接直接上这个题目的代码:#include #include #include #include #include using namespace std;int dir_x[] = {-2, -1, 1, 2, 2, 1, -1, -2};int dir_y[] = {1, 2, 2, 1, -1, -2, -2, -1};cons原创 2013-08-23 22:54:41 · 933 阅读 · 0 评论 -
c++构造函数和析构函数调用规则
先看如下程序#include #include #include using namespace std;class Test{public: Test(int a):a(a) { cout << "创建对象 : " << a << endl; } ~Test() { cout << "销毁对象 : " << a << endl; } int a;};原创 2013-08-21 16:29:57 · 1108 阅读 · 0 评论 -
c/c++实现的一个动态分配内存的结构体数组(类似vector)
这个数组可以向里面插入任何类型,包括自定义类型, 程序只是实现了基本功能,还有待完善, 下面是全部代码:#include #include #include #include #include #include using namespace std;const int inCrement = 100;typedef struct CStashTag{ int size原创 2013-08-01 01:37:38 · 12533 阅读 · 0 评论 -
递归二叉树的建立于遍历
递归实现二叉树的建树和遍历#include #include #include using namespace std;#define TRUE 1#define FALSE 0#define OK 1#define MAXSIZE 100typedef int Status;typedef int Elemetype;typedef struct BiNode{ E原创 2013-03-07 11:31:35 · 873 阅读 · 0 评论 -
Treap 基本操作
treap = tree + heap写博原因:在我学treap的时候网上的很多博客给了我很大的误解, 也有可能是我自己功底薄弱的原因, 网上很多很不错的博文都直接说Treap是平衡树, 由于我自以为平衡树就得满足节点左右孩子高度只差 终于才知道, 大家所说的平衡树其实分两种1. 一种是绝对的平衡, 满足高度差2. 而另一种却是期望平衡树, 也就是说通过计算, 数学期望原创 2014-02-10 21:57:56 · 2101 阅读 · 2 评论