![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程基础
阿元呐
这个作者很懒,什么都没留下…
展开
-
设计一个新的数据结构,可以等概率地随机获得字典中的键
初步思路:新数据结构维护一个列表,维护添加进来的键每次给数据结构设值和删除的时候,额外维护一个列表,从列表中添加和删除键。在做随机取键的时候,从该列表中随机选一个键。但额外维护的列表,会导致这个数据结构在删除值的时候,无法O(1)地从列表中删除指定的键。新数据结构使用字典,映射索引到键核心的思路是,在每次设值的时候,将该键映射到一个值。然后在每次删除键的时候,能在O(1)时间内找到这个映射值。每次设值的时候可以将键映射到当前字典的大小,在删除任意键N的时候,找到该键的映射值N1,将当前映射到字典大原创 2021-08-12 23:32:59 · 202 阅读 · 0 评论 -
python和C#的垃圾回收机制对比
再啃了一遍python和C#的垃圾回收机制,将其综合对比并总结一下。Python的垃圾回收机制首先总结一下python的垃圾回收机制:1:引用计数。python使用引用计数来统计每个对象被引用的次数,每当python对象引用数量降为0时,其内存会被立刻释放掉。这种方案的优点是原理简单,对象内存能被平稳地释放掉(因为内存释放发生在代码正常执行时,边运行边释放内存)。而缺点是无法解决循环引用问题。因此python的垃圾回收机制除了引用计数外,还补充了其他机制来解决引用计数。2:标记-清除算法。pytho原创 2021-08-08 21:09:19 · 224 阅读 · 0 评论 -
stb_image.h单头文件库的重复包含问题
问题阐述由于stb_image.h这个库在声明了:#define STB_IMAGE_IMPLEMENTATION之后便会成为可执行的源码,故不建议在头文件中声明和使用stb_image.h中的函数。例子说明我们在model.h中引入了stb_image.h库并直接在model.h中声明了一个加载纹理的方法:TextureFromFile(...)同时我们直接在model.h中定...原创 2019-03-19 16:22:41 · 4053 阅读 · 0 评论 -
C++ 虚函数的内部实现
单继承的情况下若类有虚函数,则在构造函数的时候编译器会自动为类的实例(对象)在其内存的首部(0地址偏移处)增添一个虚函数表指针vfptr,指向该类的虚函数表。虚函数表中会存放该类所有的虚函数地址,普通函数则不会被放入其中。如果是子类重写了父类的虚函数,那么在建立虚函数表的时候被重写的虚函数的地址被替换成了子类的虚函数。而使用父类指针BaseClass* base指向一个子类对象DerivedC...原创 2018-10-26 11:59:48 · 653 阅读 · 0 评论 -
翻转字符串——不用额外的内存空间
描述给定一个字符串,逐个翻转字符串中的每个单词。说明单词的构成:无空格字母构成一个单词样例给出s = “the sky is blue”,返回"blue is sky the"使用额外空间的思路使用std::string的find_first_of,以’ '为参数,将s分割成多个单词并推进堆栈中,然后利用堆栈的先进后出的特点,以弹出的顺序去得到逆序的字符串。这样会使用额外的空间来暂存...原创 2018-10-04 19:41:23 · 3843 阅读 · 0 评论 -
Lintcode181——将整数A转换为B
题目描述描述如果要将整数A转换为B,需要改变多少个bit位?Both n and m are 32-bit integers.您在真实的面试中是否遇到过这个题? 样例如把31转换为14,需要改变2个bit位。(31)10=(11111)2(14)10=(01110)2初始思路两个数异或之后得到数t(例如样例中t为10001)问题转换为判断t中有多少个1可以通过移...原创 2018-10-01 12:13:34 · 501 阅读 · 0 评论 -
非泛型集合的集合问题
非泛型集合的使用实例 假设我们创建了非泛型的System.Collections.ArrayList来保存数值(分配在栈上的)数据,查询ArrayList成员,就会发现它们所操作的是System.Object数据:public class ArrayList:...{ ... public virtual int Add(object value); public virt...原创 2018-09-07 13:54:07 · 313 阅读 · 0 评论 -
C#按值传递引用类型&按引用传递引用类型
值类型和引用类型与引用类型相对的是值类型。值类型当把一个值类型赋给另外一个时,就是对字段成员逐一进行复制,此时在栈上新建了值类型的两个副本,每一个都可以被独立操作。引用类型和栈中的值类型相比,当对引用类型应用赋值操作符时,我们就是在内存中重定向引用变量的指向。 其中,所有类实例都是引用类型。按值传递引用类型回顾一下形参和实参 在一般传值调用的机制中只能把实参...原创 2018-09-05 14:20:39 · 1109 阅读 · 0 评论