摘要:rope实现的接口可以参考这里。rope是可伸缩的string实现:它们被设计为用于把string看作一个整体的高效操作 。比如赋值、串联和子串的操作所花的时间差不多不依赖字符串的长度。与C的字符 串不同,rope是超长字符串的一个合理的表现,比如编辑缓冲区或邮件信息。 在后端,rope被实现为引用...
阅读全文
摘要:因为保研机试,所以把C语言看了一下,本来自我感觉良好,真的发现几个很基础对问题都不会。1.typedef struct node { int x, y;} Node, *pNode;这里给struct node定义了别名 Node, 之前我都以为 pNode 是 定义了一个 Node 类型对指...
阅读全文
摘要:早上苏凯童鞋问我这个问题来着,写在这里。我了解到的C中结构体初始化的方法大概有三种。如这里我定义了一个结构体:typedef struct node { int x, y;}Node;第一种:Node a = {1, 2};第二种:Node b = {x:1, y:2};第三种:Node...
阅读全文
摘要:今天浏览Google面试题的时候,有看到一个memcpy的实现,以及如何去优化memcpy。我对memcpy的实现的记忆就是,拷贝的时候需要从后往前拷贝,为何防止内存重叠。 但是如果去优化它我没有想过。原来,这里提到的一个优化方法也挺朴素的,智商捉鸡。这里的话可以一个字长一个字长的拷贝,而不需要逐个...
阅读全文
摘要:微软的编译器(C++)#pragma comment(linker, "/STACK:102400000,102400000") G++ int size = 256 << 20; // 256MB char *p = (char*)malloc(size) + size; __...
阅读全文
摘要:如果你不指定编译成什么文件,gcc默认一步到位,直接生成可执行文件你可以试试以下几个参数-c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件 例子用法: gcc -c hello.c 他将生成.o的obj文件-S 只激活预处理和编译,就是指把文件编译成为汇编代码。 例子用法 ...
阅读全文
摘要:对齐规则如下:1、 结构体的大小等于结构体内最大成员大小的整数倍2、 结构体内的成员的首地址相对于结构体首地址的偏移量是其类型大小的整数倍,比如说double型成员相对于结构体的首地址的地址偏移量应该是8的倍数。3、 为了满足规则1和2编译器会在结构体成员之后进行字节填充!注:1. 内存对齐只是一...
阅读全文
摘要:memcpy 原形为:void *memcpy(void *dest, const void *src, size_t n);其用于内存空间的拷贝,但是并没有考虑内存重叠问题。memmove原形为:void * memmove ( void * dst,const void * src,size_t...
阅读全文
摘要:container_of宏实现如下:1 #define container_of(ptr, type, member) ({ \ 2 const typeof( ((type *)0)->member ) *__mptr = (ptr); \ 3 (type *)...
阅读全文
摘要:传送门题意:求区间[a, b]中二进制位为1的个数最多的那个数,如果存在多解,则输出最小的那个。(0 2 3 typedef long long ll; 4 5 int main(void) { 6 int n; 7 scanf("%d", &n); 8 while (...
阅读全文
摘要:c++基础知识都快忘了。。记一下dec-十进制(默认)oct-八进制hex-十六进制
阅读全文
摘要:用来计算32位的unsigned int中的1的个数, 其内部实现是根据查表法来计算的。
阅读全文
摘要:好奇心来源于下面的一段代码, 一个是unordered_map, 这是c++11新加的container. 另外还有unordered_set, unordered_multimap, unordered_multiset.另外在for循环中, 可以使用下列形式:1 for (auto &eleme...
阅读全文
摘要:之前没有注意过这个问题, 转自:http://book.51cto.com/art/200901/106880.htm问:有人告诉我不能在printf中使用%lf。为什么printf()用%f输出double型,而scanf却用%lf呢?答:printf的%f说明符的确既可以输出float型又可以输...
阅读全文
摘要:无论是使用 sort() 或者 qsort(), 都会使用到自己定义比较函数,习惯上定义为 cmp如:int cmp(const void *x, const void *y) { return *(int*)x - *(int*)y;}我一直也是这样用,直到去年寒假给学弟们讲课的时...
阅读全文
摘要:编程语言C运算符优先级优先级1: ( )、[ ]、->、 .含义:圆括号、下标运算符、指向结构体成员运算符、结构体成员运算符优先级2:!、~、++、――、-、(类型)、*、&、sizeof (单目运算符,结合方向自右至左)含义:逻辑非、按位取反、自增、自减、负号、类型转换、指针、地址与、长度运算符优...
阅读全文
摘要:写多线程的时候,编译的时候遇到了问题,开始的时候是这样的:编译器不认识pthread_create和pthread_join这两个函数。搜了一下原因是没有链接相应的库,下面是我看到一个博友写的:程序库的链接试着编译下面这个程序/*temp.c*/#includeintmain(intargc,cha...
阅读全文
摘要:代码如下:#include #include #define DEBUGE 1intmain(void){ time_t rawtime; struct tm *timeinfo; time(&rawtime); //printf("%d\n", (int)rawtime); timeinfo = ...
阅读全文
摘要:sprintf()函数的printf()函数的格式基本相同,所不同是输出的位置不同,printf是标准输出函数,即输出到控制台,而sprinf()则不同。从下面代码中可以看出,sprinf()函数可以看出对格式的控制, 和printf()相同,第一个参数是指针,即输出的位置#include intm...
阅读全文