上一页 1 ··· 6 7 8 9 10 11 12 下一页
摘要: 1.在某些特殊的情况下,赋值运算符必须先释放一些旧值,然后才能根据新值的类型分配新的数据。此时,自复制会出错2.operator关键字配合要转换的类型,构成了转换运算符的重载函数。该函数没有返回值,但可以在函数中返回一个转换后的值例1:待举例。3.两个很重要的例子例2:class A{public: A(){cout<<"construct "<<this<<endl;} A(const A& a){cout<<"copy "<<this<<endl;} ~A(){cout& 阅读全文
posted @ 2012-01-17 14:22 windmissing 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 1.delete运算符只能删除堆中的空间,删除栈中的空间会导致出错例1:int main(){ A a; A *p = new A; A *q = &a; delete p;//正确,因为p指向堆中的未命名空间 delete q;//错误,因为q指向栈中的空间 return 0;}2.关于强制类型转换例2:class A{ int x;public: A(int i):x(i){cout<<"construct "<<this<<endl;} A(const A& a){x = a.x;cout<<" 阅读全文
posted @ 2012-01-17 14:17 windmissing 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 例1:class A{ int x;public: A(int i):x(i){} int get(){return x;}};A& func(){ A a(23); return a;}int main(){ A &r = func(); cout<<r.get()<<endl; return 0;}输出:1245000解释:r被初始化为返回值的别名。由于是按引用返回,返回值就是a的别名。因此,r就是a的别名。a是一个局部变量,func()结束后,a消失了。r成了一个空的引用。因此,输出的是上个随机值。例2:class A{ int x;public: 阅读全文
posted @ 2012-01-17 14:07 windmissing 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 1.指针是间接访问,因为要用*来读取地址处的数据。将指针作为函数的接收参数是间接引用的方式引用是直接访问,因为引用是别名,不用任何符号就可以直接读取该对象的数据。将别名作为函数的接收参数是直接引用2.指针引用是否可以为空可以不可以是否可以初始化可以可以是否可以赋值可以不可以是否可以访问堆可以不可以不否可以改变对象可以改变指向的对象,可以改变对象的值不可以改变引用的对象,可以改变对象的值3.例1:int &r = new int; //错误,不可以直接引用来指向堆中空间4.例2:int *p = new int; int &r = *p; //正确,r是通过指针p读取到的未命名i 阅读全文
posted @ 2012-01-16 10:39 windmissing 阅读(589) 评论(0) 推荐(1) 编辑
摘要: 1.引用就是别名,如int &rnum = num;例1:int main(){ int a; int &ra = a; ra = 999; cout<<"a:"<<a<<endl; a = 0; cout<<"ra:"<<ra<<endl; cout<<&a<<' '<<&ra<<endl; return 0;}输出:a:999 //改变ra会导致a做同样的改变ra:0 //改变a会导致 阅读全文
posted @ 2012-01-14 19:33 windmissing 阅读(116) 评论(0) 推荐(0) 编辑
摘要: /* Floyd的应用 用Floyd求出任意两点间的最短路径 两个定理: 1.所求的路径一定是一断连续的路径 2.如果路径(x,y)是a->b的最短路径中的一段,则min(a,b) = min(a,x) + min(x,y) + min(y,b) 最后只需找到同时在两条最短路径上,且距离最长的那一段 */ #include <iostream> using namespace std; const int inf=200000000; int s[305][305];//记录最短路的长度 int num[305][305];//同样长度的最短路的最长的跳数 int main( 阅读全文
posted @ 2011-12-31 14:57 windmissing 阅读(159) 评论(0) 推荐(0) 编辑
摘要: /* Floyd.h 时间复杂库:O(N^3) 用途: 1.判断中否联通 s[a][b] != inf -> 联通 s[a][b] == inf -> 不联通 2.两点间最短路径长度 s[a][b] != inf -> 最短路径长度 = s[a][b] s[a][b] == inf -> 不联通 3.两点间的最短路径的跳数 初始化时所有路径长度设为单位长度 s[a][b] != inf -> 跳数 = s[a][b] s[a][b] == inf -> 不联通 */ #include <iostream> using namespace std; 阅读全文
posted @ 2011-12-31 14:41 windmissing 阅读(214) 评论(0) 推荐(0) 编辑
摘要: //数据结构-栈的应用 #include<iostream> #include<string> #include<vector> using namespace std; struct node { int value;//值 int add;//+的次数 }; //用容器实现栈的FILO vector<node> ans;//数值栈 vector<char> sig;//符号栈 int main() { int t, i; string str; node temp, temp2; cin>>t; while(t--) 阅读全文
posted @ 2011-12-31 14:00 windmissing 阅读(121) 评论(0) 推荐(0) 编辑
摘要: /* 箱子和人共同组成一个状态,用node来记录状态 使用优先队列,是因为只有箱子移动,记数才+1,并不是每次都+1, 从队列中选择记数最小的,进行下一步搜索 只使用优先队列不能保证结果是最小。 因为两个记数相同的状态,下一步的记数不一定相同 使用flag避免重复计算 */ #include <iostream> #include <queue> using namespace std; struct node { int ceil; int people_x,people_y; int box_x,box_y; bool operator<(const node 阅读全文
posted @ 2011-12-31 13:41 windmissing 阅读(157) 评论(0) 推荐(0) 编辑
摘要: HDU1254 推箱子 BFS+优先队列HDU2433 Travel BFS求最短路径树+优化HDU1401 Solitaire 双向搜索 阅读全文
posted @ 2011-12-31 13:41 windmissing 阅读(112) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 下一页