Jian's Note

It's better to burn out than fade away!

Effective STL [17] | 使用“交换技巧”来修整过剩容量(仅适用于vector和string)

注意: 这里的容量指的是capacity 假如有一个海选,需要从申请者中挑选一些人进入到下一轮比赛当中,我们可能会建立一个vector用来存储申请者: 1 2 class Contestant {...}; vector<Contestant> contestants; vector会很快获得很多元素,你可能会将能够进入到下一轮的申请者放到 vector 的前端(可能通过 partial_sort或partition),如果

Effective STL [15] | 小心string实现的多样性

sizeof(string)的值 如果想知道sizeof(string)的值是多少,答案不一定。 string和char*指针一样大的实现很常见,也很容易找到string是char*7 倍大小的string实现。 所以得了解一下string的实现 string的实现 基本实现 字符串的大小,也就是包含的字符的数目

Effective STL [14] | 使用reserve来避免不必要的重新分配

自动扩容 STL 容器只要存储的对象不超过「最大大小」,就可以自动增长到足以容纳放进去的数据。这个最大值,只要调用名叫max_size的成员函数就可以查询到。 对于vector和string,只要需要更多空间,就以realloc等价的思想来增长。 realloc的操作有4个部分: 「分配新的内存块」。在大部分实现

Effective STL [13] | 尽量使用vector和string来代替动态分配的数组

使用new动态分配内存时的注意事项 必须确保以后会delete这个分配。如果后面没有delete,「new就会产生一个资源泄漏」。 你须确保使用了delete的正确形式: 如果使用了delete的错误形式,结果会未定义。在一些平台上,程序在运行期会当掉。另一方面,有时候会造成资源泄漏,一些内存也随之而去。

Effective STL [12] | 对STL容器线程安全性的期待现实一些

多线程维护的规则 多线程程序是很普遍的,所以大部分STL厂商努力使他们的实现在线程环境中可以正常工作。 但是,即使他们做得很好,「大部分负担仍在你肩上,而理解为什么会这样是很重要的」。 在STL容器(和大多数厂商的愿望)里对多线程支持的黄金规则已经由SGI定义,并且在它们的STL网站上发布: 「多个读取者是

Diffusion 扩散模型(DDPM)

一、引入 近年AIGC的爆火离不开人工智能在图像生成、文本生成以及多模态等领域的不断累积,其中生成模型的发展占据了很大功劳,如:生成对抗网络 GAN 及其一系列变体、变分自编码器 VAE 及其一系列变体、自回归模型 AR、流模型 flow ,以及近年大火的扩散模型 Diffusion Model 等。 扩散模型的大火并非横空出世,早在2015年就有人提出了类似

Effective C++ (第3版) 精读总结 [2]

前言 Effective-C++总结系列分为四部分,本文为第二部分,涉及原书第34章,内容范围Rule1325。为方便书写,Rule13简写为R13。 Effective-C++系列List 本博客站点系列内容如下: 💡 Effective C++(第3版)精读总结(一) 💡 Effective C++(第3版)精读总结(二) 💡 Effective C++(第3版)精
0%