随笔分类 -  C++

摘要:方法1,i不断右移动,再i&1 ,等于1 counter++int counter=0while(i&1){ counter++; i=i>>1;}View Code 方法2,i不断左移动,再判断正负,不过对于unsigned int要转int ,int counter=0;while(i0,counter++1 int counter=0;2 3 while(i)4 {5 counter++;6 i=i&(i-1);7 }方法4,速度不一定最快,但是想法绝对巧妙。 说一下其中奥妙,其实很简单,先将n写成二进制形式,然后相邻位相加,重复这个过程,直到只剩下一 阅读全文
posted @ 2013-09-29 18:02 cavehubiao 阅读(419) 评论(0) 推荐(0)
摘要:技术题竟然没做完啊,我真是擦蛋了。case好久没用了,我忘记了如果不加break要不要再根据case m判断...这真是完蛋...然后一个质因数分解,这个我真没想过怎么做,随便copy了个...然后倒数第二题约瑟夫环,这东西还是大一c++时的题目,好久没做了,写了个发现在vs2012上跑了下,总是结果输出后显示在已损坏了程序内部状态的 xxx.exe 中发生了缓冲区溢出。按“中断”以调试程序,我tm调了半天没发现什么问题,最后想着反正结果出来了,代码贴上去再说...结果一个提示,超时答案已提交.这tm我最后一题都还没看到啊...然后我把这该死的代码用vs2008跑了下,没问题啊...真不知道咋 阅读全文
posted @ 2013-09-28 11:48 cavehubiao 阅读(474) 评论(0) 推荐(0)
摘要:看到的貌似是阿里的笔试题,题意是一组数,要找到min和max,同时要求时间复杂度(比较次数)小于2n(2n的办法都想得到)。别人的思路:n个数的数组里看作每两个一组,若n是奇数,最后个单独看。然后遍历一次,找出每组数里的tmax和tmin,tmax存到一个数组,tmin存到一个数组,此时比较次数为n/2;可知最大数在max数组里,最小数在min数组里,再用普通线性比较分别遍历两个数组 找到max数组里的最大,min数组里的最小即可比较次数为n/2,n/2总共为n/2+n/2+n/2=3n/2;再对max和min数组用同样办法和直接求无差别。ps:空间上还可以继续优化下,维护两个gmax,gmi 阅读全文
posted @ 2013-09-27 18:54 cavehubiao 阅读(298) 评论(0) 推荐(0)
摘要:一个个来,首先staticstatic成员变量只能类外初始化 type classname::var(=x);static函数可以类里定义也可类外...而貌似static 非成员函数的static只表示该函数仅该文件可见...关于引用引用要绑定实体,这个实体是 int &ra=func(); 语句等号右边的值,即函数func()的返回值(也是一个引用,而这个引用每次调用时在return 语句中被初始化为静态变量a),所以,ra的实体是a。代码:程序代码:#include using namespace std;int & func(){static int a; //静态局部变 阅读全文
posted @ 2013-09-26 16:52 cavehubiao 阅读(127) 评论(0) 推荐(0)
摘要:基类有static成员时,派生类不会额外开辟一个空间存储static成员,而是基类子类公用。这几天在家休息,一直为退学的事情发愁,最后还是不敢退...#include using namespace std; class Base{public: static int a; static void print() { cout << a << endl; } static void set(int number) { a = number; }}; class Derived1 : public Base{}; class... 阅读全文
posted @ 2013-09-21 20:25 cavehubiao 阅读(157) 评论(0) 推荐(0)
摘要:看到网上金山笔试一题enum{a,b,c=1,d}cout<<a<<b<<c<<d试了下 a=0,b=1,c=1,d=2enum{a,b,c=255,d=456,e}a=0,b=1,c=255,d=456,e=457enum{a,b,c=255,d=34,e}a=0,b=1,c=255,d=34,e=35可见一般,未指定e的根据前面的+1enum{a,b,c=INT_MAX,d,e}INT_MAX为有符号整形的最大值21亿左右,d=-(INT_MAX+1), e=-INT_MAX; 阅读全文
posted @ 2013-09-14 19:01 cavehubiao 阅读(123) 评论(0) 推荐(0)
摘要:解压到这里e:\lib\boost_1_54_0,打开visual studio 2008 command prompt, cd进入boost 顶层目录 ,输入bootstrap.bat按提示继续即可bootstrap.batb2--toolset=msvc-9.0--build-type=completestage 阅读全文
posted @ 2013-09-13 19:39 cavehubiao 阅读(227) 评论(0) 推荐(0)
摘要:一道题#pragma pack(2)classA{inti;unionU{charbuff[13];inti;}u;voidfoo() { }typedefchar* (*f)(void*);enum{red, green, blue} color;}a;sizeof(a)的值是()A、20 B、21C、22D、24 E、非以上选项(第一个i 4,union 一共14 enum 4,其他不占。union 详解union A{int a[5];charb;double c;};struct B{int n;A a;char c[10];}sizeof(B) = ?答案:union A:{int 阅读全文
posted @ 2013-09-09 21:34 cavehubiao 阅读(410) 评论(0) 推荐(0)
摘要:快慢指针中的快慢指的是移动的步长,即每次向前移动速度的快慢。例如可以让快指针每次沿链表向前移动2,慢指针每次向前移动1次。快慢指针的应用判断单链表是否为循环链表让快慢指针从链表头开始遍历,快指针向前移动两个位置,慢指针向前移动一个位置;如果快指针到达NULL,说明链表以NULL为结尾,不是循环链表。如果 快指针追上慢指针,则表示出现了循环。fast=slow=head;while(true){if (fast==NULL || fast->next==NULL)return false;else if (fast==slow || fast->next==slow)return t 阅读全文
posted @ 2013-09-09 21:18 cavehubiao 阅读(369) 评论(0) 推荐(0)
摘要:对象析构谈—— delete this 的使用及注意事项In order to understand "delete this" :First Step - dive into "delete p"delete p 执行了哪些步骤?delete p 是一个两步的过程:调用析构函数,然后释放内存。delete p产生的代码看上去是这样的(假设是Object*类型的):delete原语可以看作如下这样一个过程:p->~Object();p->operator delete(p);p->~Object() 语句调用p指向的Object对象的析 阅读全文
posted @ 2013-09-09 20:03 cavehubiao 阅读(1061) 评论(0) 推荐(0)
摘要:对应NULL指针 ,可以调用函数无引用this的非virtual 函数,对应virtual函数,由于实际是通过vtptr调用,所有也不行但是下面的情况class base1{public: virtual void vfunc() { coutbase1::vfunc();可以调用成功,问了下别人回答是:“都指定用基类的函数了,还取什么vtable, 直接是内存中的固定地址了。p == NULL , 调用子类的虚函数,必然先 *(vTable *)p , 这时候就我了割草的崩溃了。” 阅读全文
posted @ 2013-09-08 19:38 cavehubiao 阅读(249) 评论(0) 推荐(0)
摘要:longest prefix/*ID: hubiao cavePROG: prefixLANG: C++*/#include#include#includeusing namespace std;string sary[202],s;bool g[200050];int len[202],slen,ans;int main(){ ifstream fin("prefix.in"); ofstream fout("prefix.out"); string str; int co=0; int i=0; while(fin>>str,str!=& 阅读全文
posted @ 2013-09-08 19:30 cavehubiao 阅读(185) 评论(0) 推荐(0)
摘要:开是查临时变量的相关资料class A{public: A() { cout<<"default construction"<<endl; } A(const A&) { cout<<"copy construction"<<endl; } A& operator =(const A& a) { cout<<"operator ="<<endl; } ~A() { cout<<"destruction"< 阅读全文
posted @ 2013-08-26 00:35 cavehubiao 阅读(287) 评论(0) 推荐(1)