2014年2月20日

摘要: 前言 经过前两篇随笔( 上 中 )的分析我们已经解决了具有指针成员的同类对象“ 干涉 ”问题。可惜,前面给出的解决方案代码还是不完整。还有什么问题呢?观察发现,构造函数里面有new的关键字出现,也就是说开辟了新的内存空间,我们也知道new必须也只能对应一个delete,而不应该让系统自己处理( 还... 阅读全文
posted @ 2014-02-20 09:45 空山悟 阅读(436) 评论(0) 推荐(0) 编辑
摘要: 前言 先思考一下上一篇随笔前言中提出的问题。请问:仅仅自定义了复制函数就可以避免带有指针成员的同类对象相互干扰吗?很遗憾,还不够。请思考以下情形( A中依然带有指针成员 ):A a1; A a2; a1 = a2; 在最后一句执行时,复制函数并不会启用( 这种情况启用的是默认的赋值运算符 ),因此... 阅读全文
posted @ 2014-02-20 09:44 空山悟 阅读(504) 评论(2) 推荐(0) 编辑
摘要: 前言 若要将a对象复制给b对象,编译器应当做何工作?C++初学者也许会直接说” a对象的成员复制给b对象的成员 “。在很多情况下,这种说法正确,事实上C++会给类定义一个默认的复制函数,它所做的工作也正是如此。但,下面问题来了:如果类的成员当中有指针,这种做法还行吗?本文将对这个问题作出实例分析。... 阅读全文
posted @ 2014-02-20 09:42 空山悟 阅读(403) 评论(0) 推荐(0) 编辑

2014年2月14日

摘要: 前言 C++提供了很多算法(超过一百个),要想掌握这些算法的使用需要将它们都死记下来吗?当然不用了,本文将为你剖析泛型算法的基本结构,让你以后对这些算法做到“ 望名生义 ”。算法的形参结构 绝大多数算法的形参采用以下四种形式之一: 1. 算法名 ( 起始迭代器, 末端迭代器, 其他参数 ) 说明:起始迭代器和末端迭代器标识了算法的输入范围,其他参数与算法特性有关。 2. 算法名 ( 起始迭代器, 末端迭代器, 插入迭代器/流迭代器, 其他参数 ) 说明:起始迭代器和末端迭代器标识了算法的输入范围,插入迭代器/流迭代器标识了输出对象(其范围假定和输入范围一样大),其他参数与算法特性有... 阅读全文
posted @ 2014-02-14 09:49 空山悟 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 前言 标准算法配合迭代器使用太美妙了,使我们对容器(数据)的处理更加得心应手。那么,能不能对IO流也使用标准算法呢?有人认为不能,他们说因为IO流不是容器,没有迭代器,故无法使用标准算法。他们错了,错在IO流确实不是容器,但它能绑定一种特殊的迭代器,叫做流迭代器。一些算法能以流迭代器为参数,对IO... 阅读全文
posted @ 2014-02-14 09:47 空山悟 阅读(557) 评论(0) 推荐(0) 编辑

2014年2月12日

摘要: 前言 本文将讲解一个经典的文本查询程序,对前面所学的容器相关知识进行一个从理论到实际的升华,同时也对即将学习的面向对象知识来一次初体验。程序描述 要求实现这样一个程序:读取用户指定的文件,然后允许用户从中查找某个单词所在的位置。一个面向过程的落后的设计思想 将待检索文件以行为单位存放到Vect... 阅读全文
posted @ 2014-02-12 22:36 空山悟 阅读(723) 评论(0) 推荐(0) 编辑
摘要: 前言 multimap容器是map容器的“ 增强版 ”,它允许一个键对应多个值。对于map容器来说,find函数将会返回第一个键值匹配元素所在处的迭代器。那么对于multimap容器来说,find函数将如何运作呢?如果要实现和map容器的find函数同样的功能,则它将返回多个迭代器,这样太复杂了。... 阅读全文
posted @ 2014-02-12 22:34 空山悟 阅读(1622) 评论(1) 推荐(2) 编辑
摘要: 前言 我们可以用下标访问顺序容器的元素,也就是说在顺序容器实现中下标和元素的值相关联。那么能不能让别的值(而不是下标)与元素的值相关联呢?有的,实现这种功能的容器就叫做关联容器,而关联的本质就是某个特定的“键”与元素的值相关联。常见的关联容器 1. map:也即关联数组,是键 - 值的集合 2... 阅读全文
posted @ 2014-02-12 22:32 空山悟 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 前言 vector容器的数据结构原型是顺序表,它很好的实现了顺序表的功能,大大方便了编程。好了,现在假设有天我又想用栈,那么有没有栈对应的容器呢?很遗憾,木有。但基于“栈”可以由顺序表或者链表实现这一特性,C++提供了stack给我们使用,来解决栈的实现这个问题。stack可不是类,也不是容器,那... 阅读全文
posted @ 2014-02-12 22:30 空山悟 阅读(922) 评论(0) 推荐(0) 编辑
摘要: 前言 常见的顺序容器主要有三种 - vector,deque,list。它们实现的功能相差不大,那么实际开发中该如何进行选择呢?本文将为你解答这个问题。分析 由于这三种容器实现的数据结构原型不同(vector实现原型是顺序表,deque是双端队列,list是链表),因此这三种容器对插入删除以及访问操作的开销是不同的。为了编制出高效的程序,我们应当通过分析容器操作的开销来选择容器。访问操作对容器选择的影响 1. vector容器的随机访问效率最高 2. deque容器的随机访问效率也高 3. list容器的随机访问效率低插入删除操作对容器选择的影响 1. vector容器只是在尾部... 阅读全文
posted @ 2014-02-12 22:02 空山悟 阅读(339) 评论(0) 推荐(0) 编辑

导航