回答了问题2017-02-04
你这个都不需要用智能指针啊,直接std::vector<std::vector<int>>不就可以了么?
关注了问题2017-02-04
回答了问题2017-01-25
实际上相当于一个两重循环,每次c先取"hello"中的一个字符,i再从0到1,因而就是 c (c + 1).toChar h i e f l m l m o p 按z字形来读上面这个表也就是结果了。
关注了问题2017-01-25
回答了问题2016-12-18
用协程优化这种网络操作其实原理类似于一个脑筋急转弯:“用一个锅煎1个鸡蛋要3分钟,请问煎3个鸡蛋要几分钟?”对于网络库而言,如果网络API用的是阻塞API的话,recv操作会阻塞到有合适的缓冲区内容为止,但是recv操作本身并不是用来准备缓冲区的操作,意思就是如果 r...
关注了问题2016-12-18
回答了问题2016-10-23
std::thread::join()这个函数并不是用来开启线程的,相反,是为了阻塞当前线程以等待相应线程结束的。std::thread对象构造的时候即开始运行新线程。
关注了问题2016-10-23
回答了问题2016-10-21
你是说这种么
关注了问题2016-10-21
关注了问题2016-10-21
回答了问题2016-10-11
因为string.len()需要先查找string再找其下的len,再传参再调用,至少需要4条 lua vm bytecode;而#直接被翻译为LEN指令,一条指令就可以算出来。
关注了问题2016-10-11
回答了问题2016-10-07
这是将自然数定义为了函数的“作用”,对于某个自函子函数f(x)而言,自然数列(0, 1, 2, 3, ...)被映射成了:x, f(x), f(f(x)), f(f(f(x))), ...
关注了问题2016-10-07
回答了问题2016-09-21
如果你是要把输入的字符串的内容放到数组a和b里,第七行应该改成: {代码...} 另外,由于 C 语言内存排布的原因,很有可能非常凑巧的数组b占据了数组a之前的6个字节,这可以通过如下代码: {代码...} 这使得如果你的b录入了恰好6个字节的时候,b末尾插入的\0被插入到...
关注了问题2016-09-21
回答了问题2016-09-12
不是malloc()的内存是连续的,如果是连续的话,起码也要再用malloc()申请一段内存然后比较两次申请的内存位置才能判定。这是由于malloc()的实现实际上一般是利用mmap()从操作系统申请内存页,这也就意味着内存总是按页分配给进程的。一个内存页的典型大小有 4K 到 4M...
关注了问题2016-09-12
回答了问题2016-09-07
实际上mosh的实现用了 ANSI 转义字符,关于 ANSI 转义字符这个概念,可以在网上找到很多介绍,我就不再赘述了,我直接给出一个下划线的例子: