上一页 1 2 3 4 5 6 7 ··· 11 下一页
摘要: 条目二十《为包含指针的关联容器指定比较类型》 stl中的关联容器是一种动态数据结构,其数据存储方式是以内存节点方式的数据结构,具体来说一般是一种平衡二叉树(红黑树),在向关联容器插入元素的时候,容器内部为了保持树的平衡性,会自动(插入函数有自我调整代码)的调整当前插入元素的存储位置,达到动态平衡的目 阅读全文
posted @ 2019-01-16 01:14 那一抹风 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 《条目十八》避免使用vector 先说结论: 一是: 不是标准容器,因为标准容器的对于 必须是可编译的。 二是: 并不是以单个元素为 来存储的。 在底层实现中, 中为了节省空间, 并不真的是以单个字节来存储的,而是通过 来表示的,一个位代表一个 表示。 vector不满足STL容器的必要条件,你最好 阅读全文
posted @ 2019-01-16 01:02 那一抹风 阅读(1148) 评论(0) 推荐(0) 编辑
摘要: 《条目十九》了解相等和等价的区别 在stl标准库中,find和insert两个操作都涉及到对数据的 比较 。但是他们是两种不同的比较,前者是基于 相等 (基于 ,表达式 ),后者是基于 等价 (基于`if(!x { bool operator()(const string& lhs,const st 阅读全文
posted @ 2019-01-16 01:02 那一抹风 阅读(763) 评论(0) 推荐(0) 编辑
摘要: 条目十七《使用“交换技巧”来修整过剩容量》 先说原理: 创建一个临时容器,把 容器 拷贝到 临时容器 ,借用拷贝构造函数只对原容器有效元素拷贝而忽略多余的空间,然后再把临时容器和原容器的内容 互相交换 ,就达到容量尽可能修剪的目的。 记住!!!是尽可能修剪。因为容器,比如vector在底层的实现可能 阅读全文
posted @ 2019-01-16 01:01 那一抹风 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 《条目十六》如何将vector和string的数据传给遗留的API 优秀的代码是可以延续的,所以并非所有的代码都是重构的,而且有时候重构会对整个系统影响较大,投入巨大,得不偿失。然而,也不必为了系统的稳定而抛弃先进和方便的技术。 正如如果你想在遗留的 老代码 中想传 和`string`给形参是数组的 阅读全文
posted @ 2019-01-16 01:00 那一抹风 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 条目十五《注意strng实现的多样性》 下面以一个打印string空对象的大小切入本条目: include include using namespace std; int main() { string ss; printf("ss size: %ld\n", sizeof(ss)); retur 阅读全文
posted @ 2019-01-12 15:48 那一抹风 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 条目十四《使用reserve来避免不必要的重新分配》 使用vector和string的插入元素的时候,我们是不用担心内存问题的(只要不超过容器的max_size)。因为底层有分配子管理内存。在插入元素的时候,内存不够会发生像realloc的过程: 1. 分配新的内存块,它有容器目前容量的几倍。在大部 阅读全文
posted @ 2019-01-12 14:44 那一抹风 阅读(417) 评论(0) 推荐(0) 编辑
摘要: 条目十三《尽量使用vector和string来代替使用数组》 数组在现代编程语言中基本都存在,应用可谓广泛,不可或缺,虽然在一些语言中(go)有切片等数据结构,但是数组还是存在的。 但是在有了stl后,在使用数组时更建议用vector和string来代替,因为在动态分配数组的内存时,需要人为的管理内 阅读全文
posted @ 2019-01-12 14:10 那一抹风 阅读(651) 评论(0) 推荐(0) 编辑
摘要: 条目十二《切勿对slt容器的线性安全性又不切实际的依赖》 这一条目,我想用简短而有力的语句来总结。 stl库是为了照顾大多数情况,而不是某一领域,如果在库层次实现线性安全,很大可能是对性能有所损耗的,这样就得不偿失了,还是让开发者自己按需实现。标准没有在库实现线性安全。一般是厂商实现,可能吧,只能是 阅读全文
posted @ 2019-01-12 00:17 那一抹风 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 条目十一《理解自定义分配子的合理用法》 根据大牛们的测试: STL默认的内存管理器(allocator)太慢,或者浪费内存,或者在使用的时候会产生内存碎片。 又或者需求不一样时: 1.allocator是多线程安全的,而你运行环境是单线程,所以想减少线程同步带来的te不必要开销。 2.当想把容器的对 阅读全文
posted @ 2019-01-11 23:54 那一抹风 阅读(218) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 11 下一页