C/C++
__Lingyue__
微软亚洲研究院 实习生
展开
-
c++ unordered_map
unordered_map是一个哈希表,查询的复杂度为O(1),性能瓶颈在resize这个过程中。通过实验发现它的resize过程大致是两倍以上的一个素数:0, 2, 5, 11, 23。原创 2017-02-05 19:00:11 · 999 阅读 · 0 评论 -
cctype 常用字符处理函数
isalnum():字母或数字返回1 isalpha():字母返回1 isdigit():数字返回1 ispunct():标点符号返回1(可打印字符中除了字母数字的部分) isspace():标准空白字符返回1 isprint():打印字符返回1 isgraph():除空格外的打印字符返回 isxdigit():十六进制返回1,比如0-9, a~f, A~F islower():小写原创 2017-10-20 10:21:41 · 510 阅读 · 0 评论 -
c++ next_permutation 枚举排列数
这个函数会改变原数组本身。每执行一次就会返回当前字典序的下一个升序字典序。所以如果想遍历所有排列的话数组需要初始化为最小字典序。原创 2017-10-02 01:50:00 · 560 阅读 · 0 评论 -
c++ min_element max_element
c++ 中有两个函数可以直接计算数组中的最大值或者最小值,返回的是一个指针。原创 2017-02-01 18:12:20 · 829 阅读 · 0 评论 -
c++ accumulate 用法 原理剖析
accumulate(begin(), end(), init, binary_op), 默认是add运算。原创 2017-02-01 18:06:00 · 2666 阅读 · 0 评论 -
c++ remove() erase() 区别
remove(begin(), end(), val): 返回新的end()迭代器但是不改变原来数组的end()迭代器的值。erase(): 返回下一个元素的迭代器且改变原来数组的end()迭代器的值原创 2017-01-30 18:33:02 · 2998 阅读 · 0 评论 -
c++ new delete new[] delete[] 底层实现
关于delete和delete[]的相关实现。原创 2017-01-17 18:01:16 · 7876 阅读 · 2 评论 -
If-else 三目运算符 底层实现 效率差异
读完文章后自己的一个小结: 在没有编译器优化的情况下三目运算符比If-else快,因为三目运算符还会使用额外的临时变量,它先运算后复制,If-else是直接赋值,所以速度会快,但是现在的编译器已经会把这些做优化,优化后的汇编代码是一样的,就好比i++和++i,编译优化后的汇编代码是一样的。原创 2017-01-17 15:57:24 · 17168 阅读 · 6 评论 -
c++ 引用 底层实现机制
看完原文后的一个小结: 1. 引用是在编译的过程中被处理的,实际上就是在编译层面对程序员进行的一个比较友好的语法,而在实现上是由编译器完成了地址的传递,实质上还是指针。 2. 不能简单的理解为一个别名,我们可以这样用,但是要知道底层就是一个指针变量,是要占用内存空间的,和define是不一样的。原创 2017-01-17 10:23:48 · 3671 阅读 · 6 评论 -
C语言 实现 peek() 函数
1. c++中的peek()函数可以返回输入流中的下一个字符而不把这个字符从输入流中取出。2. 利用c中的getc和ungetc实现了c++中类似的功能。3. peek_nextchar()和get_nextchar()返回下一个非空的字符。原创 2017-11-08 09:35:13 · 5666 阅读 · 0 评论