![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程注记
文章平均质量分 60
xfese
这个作者很懒,什么都没留下…
展开
-
2的幂的哈希表
64位的各位对应值的哈希表,这是一个为了能够有效单独处理每一位所对应的一个数据。由于一共有64位,二进制各位模64,从第7位开始就全为0了,故首先从65看,而65不冲突的个数仅为12个,66不冲突的个数仅为11个。但计算到67时,会发现,刚好所有二进制单位上的值模67全部无冲突。即有64个不重复的数字。这些数字可以构建一个2的幂的哈希表,使得所有查询,修改,删除全为O(1)O(1)O(1)因此采用 hash(n)=n mod 67\text{hash}(n)=n\ \text{mod}原创 2022-01-09 01:47:03 · 204 阅读 · 0 评论 -
STL list合并
说明C++STL的list如何以O(1)复杂度合并两个链表。原创 2021-12-19 15:44:50 · 1159 阅读 · 1 评论 -
西格玛与罗比特(PTA)的一种思路分析(初稿)
题目为:给定一个整数n,计算,其中为i的最低位1所在的位置(注意和常规的lowbit定义不同),例如,因为。输入格式:第一行一个数T表示T组测试数据。接下来有T行,每行一个n。(1≤T≤100000,1≤n≤)输出格式:输出T行,每行一个数,第i行的数表示第i组测试的答案,由于答案可能很大,请将答案对 取模。输入样例:512345输出样例:1582025分析:在一般的解题过程...原创 2021-04-29 20:34:37 · 279 阅读 · 1 评论 -
C/C++ 求[log2]通过IEEE754方法ver1
为了求给定数的最高位二进制位置,想尝试使用IEEE754实现,据测试,可以实现,但事实上与std::log2无差别,甚至效率还比较低。char Flog2(unsigned x) { register float f = (float)x; return (char)((*(unsigned*)&f) >> 23) - 127;}由IEEE754规定,binary32的定义为:其中E<阶码>为8位,且最高位为浮点数值本身的符号位。故包括浮点值本身的原创 2021-04-03 19:01:21 · 721 阅读 · 0 评论 -
GCC下通过汇编获取cpu时间戳(注记)
unsigned long long _get_cpu_counts_() { __asm__("rdtsc;\nshl $32, %rdx;\norq %rax, %rdx;\nmovq %rdx, %rax");}等价于(Intel汇编):rdtsc;//等价于db 0F,31(见下图);//一般像vc++不能识别rdtsc(现在有没有修复没有做测试,这里也不展开研究);//使用 _asm _emit 0x0F 以及 _asm _emit 0x31shl rdx, 32or原创 2021-03-23 20:46:08 · 751 阅读 · 1 评论 -
C++ foreach使用条件(注记)
1.需要C++11。2.对于要进行foreach历遍的类,必须要有begin(),以及end(),两者返回一个迭代器,具体看迭代器定义:cplusplus迭代器。注:对于类内需要用到支持迭代器机制的集合对象(或者说STL对象),如果只是使用一个该对象,并在该对象上进行历遍,那么考虑继承方式就可以不用考虑该实现,如果需要在多个对象上历遍,就需要自己实现begin(),与end()。...原创 2021-03-17 12:58:42 · 664 阅读 · 0 评论