c++学习
文章平均质量分 77
wangyanphp
这个作者很懒,什么都没留下…
展开
-
文本查询程序--摘自c++primer
本文总结摘录了《c++ primer》中的一个大例子---文本查询程序。主要目的在于学习大师的编程规范。 程序要求:读取用户指定的任意文本文件,然后允许用户从该文件中查找单词。查询的结果是该单词出现的次数,并列出每次出现所在的行。如果某单词在同一行中多次出现,程序将只显示该行一次,行号按升序显示。分析:输入为文件名;必须将一行作为一个整体,由行号输出所在行;必原创 2013-07-08 11:37:40 · 918 阅读 · 1 评论 -
C++动态内存
1. 堆(heap)关于操作系统的内存管理的具体内容可以看《深入了解计算机系统》第九章——虚拟存储器。 进程内存分布图如下: 动态内存分布主要发生在heap上,对于每个进程,内核维护一个变量brk,指向heap的顶部。访问超过brk的地址,将会发生错误。那么heap是什么呢?heap是一组不同大小的块(block)的集合。每个块就是一个连续的虚拟存储器片(chuank),要么是...原创 2018-02-09 12:21:24 · 355 阅读 · 0 评论 -
C++的I/O(vc版)(七)
首先,我们还有很多的类没有分析:istream,filestream,filebuf,还有对应得迭代器。第二,即使前面的分析也不能说明I/O的使用规范。如果想要熟练的使用I/O,建议读《C++标准程序库》,那是一本经典。第三,流的格式化读取和输出大部分依靠的是locale,而我们前面很少涉及,现在还看不懂源码,只能以后分析了。 下面摘抄《c++标准程序库》中关于如何自定义I/O操作符的说明。原创 2013-08-28 12:17:31 · 812 阅读 · 0 评论 -
C++的I/O(vc版)(六)
首先回忆一下,我们已经分析过的类:基本的流类完成:流状态信息,格式化信息,其中一些不能用掩码表示,需要特定的数据成员,locale对象,流缓冲类指针,耦合的ostream;基本的流缓冲类完成:六个指针的存储。这个我们分析的是basic_ostream 首先是类中会用到的类型声明: typedef basic_ostream _Myt; typedef basic_ios _Myios原创 2013-08-28 00:42:29 · 1598 阅读 · 4 评论 -
C++的I/O(vc版)(三)
前面已经分析完ios_base类了,现在来分析一下basic_ios//此处为了简洁,将许多别文件的定义搬到此文件typedef int _Mbstatet;typedef fpos streampos;typedef streampos wstreampos;#define EOF (-1)//原本定义于stdio.h//下面是类char_traits的定义//不同的字符集,不同原创 2013-08-27 14:37:56 · 1281 阅读 · 0 评论 -
C++的I/O(vc版)(五)
具体的缓冲类有filebuf,stringbuf,由于filebuf的大部分工作都转交给了C流,不好分析,所以重点分析的还是stringbuf。 对于stringstream,我们最常用的语句就是:string s="1.2 5.6 7 7 ";istringstream is(s);float f; is >> f;上述语句,给出了stringbuf的基本形式:以string初原创 2013-08-27 16:30:27 · 1118 阅读 · 0 评论 -
C++的I/O(vc版)(四)
下面进行我们的第二大类,流缓冲类。stream并不负责写或者读,毕竟如它原本的目的一样:负责格式化,存储格式化信息;当然我们还用它存储状态信息等等。stream把它的读写工作转交给stream buffer,即缓冲区类。缓冲区类主要是围绕着位置展开操作,下面先介绍一个与位置有关的类:/*fpos:它可以存储还原任何流中的任意文件的位置指示器所需的所有信息 * 对象的类 fpos原创 2013-08-27 15:07:22 · 1377 阅读 · 0 评论 -
C++的I/O(vc版)(二)
根据流类体系,我们可以看出基本的流类是ios_base和basic_ios 首先是ios_base是流类始祖,先分析ios_base,ios_base中储存的是不依赖于读写的数据的类型的基本信息,如格式化信息、异常状态、事件回调函数等。首先看一下数据成员: iostate _mystate;//stream state iostate _except_;//except原创 2013-08-27 00:29:49 · 868 阅读 · 0 评论 -
c++的I/O(vc版)(一)
c++的I/O是我们最常用的库之一,也是操作复杂,功能复杂的类库之一。 在C++的程序中,很少有不用I/O的程序,但是,对于我来说,I/O我却用的出奇的差,只会几个简单的函数,尽管够用,但是却用的效率奇低,于是,在此学习c++ I/O类库的使用方法。首先是I/O中流的概念,c++的I/O中的所有的操作都是基于流。流i/o:要传递的数据是无结构的字节流,字符流或者任意同等大小单位原创 2013-08-25 18:30:39 · 1103 阅读 · 0 评论 -
Allocate--摘自STL源码剖析
Allocate管理的是内存分配。这里主要考虑的是对于小额区块的内存管理,如果小额区块直接使用new操作符进行分配,第一会造成内存的碎片;第二配置时会造成额外负担;所谓额外负担就是,每次索取一块内存时,都必须向系统分配一块空间,以记录内存的大小。所以这里采用两级配置器:第一级配置器就是当要求的内存足够大时,直接使用malloc和free配置和释放内存;多大是足够大?STL中定义当要原创 2013-07-20 11:29:07 · 937 阅读 · 0 评论 -
迭代器--摘自STL源码剖析
//迭代器是一种智能指针//首先利用继承关系定义五种迭代器类型struct input_iterator_tag{};struct out_put_tag{};struct forward_iterator_tag:public input_iterator_tag{};struct bidirectional_iterator_tag:public forward_iterator_t原创 2013-07-20 11:36:13 · 582 阅读 · 0 评论 -
五种内存处理基本工具
/**********内存处理基本工具**********************///五个全局函数,作用于未初始化的空间//----------------------------------------------------------------//将初值设定在指针指定的空间上templateinline void construct(T1* p,const T2& value)原创 2013-07-20 11:37:53 · 633 阅读 · 0 评论 -
C++的多态
虽然没有学过Java,但是很喜欢Java的干净、统一,没有特别多的意外情况。因为Java里“一切皆是对象”。所有的类型都继承自Object类型,所以能写出一个适用于一切类型的函数。这是一个良好的实践,符合设计模式的基本特征。所以当我们看许多C++框架的时候,这个框架都会有一个Object类,框架里所有的类都继承自这个类——这也算是自成一个小系统了。但是,在写C++程序时,我时常会遇到一个问...原创 2018-02-10 19:59:12 · 287 阅读 · 0 评论