随笔分类 -  STL源码剖析

摘要:vector容器概述 vector的数据安排以及操作方式,与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变;要换个大(或小)一点的房子,可以,一切琐细都得由客户端自己来:首先配置一块新空间,然后将元素从旧址一一搬往新址,再把原来的空间释还给系统。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此,vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必因为害怕空间不足而一开始要求一个大块头的array了,我们可以安心使用array,吃多少用多少。 vector的实现技术,关键在于其对大小 阅读全文
posted @ 2013-08-21 20:42 一枚程序员 阅读(4673) 评论(0) 推荐(0) 编辑
摘要:全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘中都会考到。。首先来看看题目是如何要求的(百度迅雷校招笔试题)。题目:用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,如 abc 的全排列: abc, acb, bca, dac, cab, cba。。一、全排列的递归实现为方便起见,用123来示例下。123的全排列有123、132、213、231、312、321这六种。首先考虑213和321这二个数是如何得出的。显然这二个都是123中的1与后面两数交换得到的。 阅读全文
posted @ 2013-08-17 17:30 一枚程序员 阅读(19419) 评论(0) 推荐(3) 编辑
摘要:对于const变量,我们不能修改它的值,这是这个限定符最直接的表现。但是我们就是想违背它的限定希望修改其内容怎么办呢?于是我们可以使用const_cast转换符是用来移除变量的const限定符。const_cast类型转换能够剥离一个对象的const属性,也就是说允许你对常量进行修改。#includeusing namespace std;/*用法:const_cast (expression) 该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。 一、常量指针被转化成非常量指针,并且仍然.. 阅读全文
posted @ 2013-08-14 14:15 一枚程序员 阅读(484) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示