摘要: 今天某个地方要用到很多位标记于是想着可以用下bitset,不过发现居然是编译时确定空间的,不能动态分配。那就只能用vector来代替一下了,不过发现居然有vector这个特化模板,按照说明它的空间分配一般的实现就是一个元素一个bit,这就和bitset具有类似的空间效率了。另外它支持flip和一个具... 阅读全文
posted @ 2014-04-14 08:21 卖程序的小歪 阅读(1328) 评论(0) 推荐(0) 编辑
摘要: 位移如果sizeof(int) = 4,那么下面的代码的结果是什么?int x=255; printf("%d", x>>34);实际输出:63在编译这个代码时,编译器会给出警告[Warning] right shift count >= width of type [enabled by default](这时假设位移运算位移步数只能在[0, type_bit_width)范围内)位移操作会对其位移步数对数值位宽(这里int类型为32位)做一次求余操作即上述代码等同于x >> (34 % 32)实际上上述的等同不完全正确,当位移步数是负数时x 阅读全文
posted @ 2014-04-13 11:43 卖程序的小歪 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 逻辑与关系运算符if (flags & FLAG != 0) {...}这类错误以前也犯过,因为!=的优先级比&要高所以实际上是这样的if (flags & (FLAG != 0))可以把&、|也作为一种逻辑操作,而逻辑操作符的优先级总是比比较操作符、运算操作符来得低。可以这样想,首先进行了一些运算,然后才比较他们的值,通过比较有了布尔值,最后就进行逻辑与、或操作了。位移与算术运算符上面的错误可能会在不清楚的情况下使用括号,但是下面的情况则很难会觉察到,记得好几次都是莫名其妙的位移操作出现过问题。res = hi Element selection throug 阅读全文
posted @ 2014-04-12 15:59 卖程序的小歪 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 有的时候为了做些读写测试需要一些指定大小的文件,这时候可以通过下面的方法得到dd if=/dev/urandom of=rnd_tmp_file bs=1M count=100使用dd工具以Linux的urandom设备为输入(if=/dev/urandom),生成一个名为rnd_tmp_file(of=rnd_tmp_file)约100MB(1MB * 100)的随机文件当然也可以使用/dev/random作为输入,据说有更好的随机性,但是速度奇慢,反正随便生成文件不是用于重要的加密过程,前者早已可以满足要求了。如果想要更快的速度生成一个文件可以将/dev/zero作为输入,但是这时生成的文 阅读全文
posted @ 2014-04-12 14:40 卖程序的小歪 阅读(1673) 评论(0) 推荐(0) 编辑
摘要: 1 class Solution { 2 public: 3 bool isValid(string s) { 4 char open[] = {'(', '[', '{'}; 5 char close[]= {')', ']', '}'}; 6 ... 阅读全文
posted @ 2014-04-12 10:02 卖程序的小歪 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 1 class Solution { 2 public: 3 vector > subsets(vector &S) { 4 sort(S.begin(), S.end()); 5 vector > res; 6 vector path; 7... 阅读全文
posted @ 2014-04-12 09:27 卖程序的小歪 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 文件描述符常量(unistd.h):STDIN_FILENOSTDOUT_FILENOSTDERR_FILENO通常这些常量分别对应于数字0,1,2文件操作需要头文件fcntl.h,一些常量需要头文件unistd.hopenint open(const char *pathname, int oflag, ... )其中oflag可以是以下值的集合O_RDONLY、O_WRONLY、O_RDWR读写属性O_APPEND、O_CREAT、O_EXCL、O_TRUNC、O_NOCTTY、O_NONBLOCKcreat等效于open (pathname, O_WRONLY | O_CREAT | O 阅读全文
posted @ 2014-04-11 21:38 卖程序的小歪 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 感觉用github管理自己平时的一些代码挺方便的,尤其还有各种统计,作为一个码农,就有一种每日签到、累计签到统计的感觉。用github,学习git自然是不可避免的,原先只是用几个git clone、git add、git commit、git pull、git push、git log等命令,一般的... 阅读全文
posted @ 2014-04-11 15:47 卖程序的小歪 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 4 using namespace std; 5 6 class Card { 7 private: 8 int m_SerialNumber; 9 public:10 Card(int id) : m_SerialNumber(id) {}11 ~Card() {cout(rawMemory);19 20 for (int i=0; i=0; i--) {29 cards[i].~Card();30 }31 operator... 阅读全文
posted @ 2014-04-10 22:27 卖程序的小歪 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 4 using namespace std; 5 6 class Base { 7 public: 8 int idx; 9 Base(int _idx=0) : idx(_idx) {}10 11 void show() {cout<<"Base"<<idx<<endl;}12 void print() {cout<<idx<<endl;}13 };14 15 class Derive : public Base {16 public:17... 阅读全文
posted @ 2014-04-10 22:08 卖程序的小歪 阅读(182) 评论(0) 推荐(0) 编辑