随笔分类 - C/C++
摘要:生命周期,作用域的定义;说明全局变量、静态变量、局部变量、const变量的生命周期、作用域:生命周期:是一个变量存在的周期。作用域:是一个变量可以被引用的范围。最常见的如:{}、static修饰符等等。1)全局变量:作用域:全局作用域(只需要在一个源文件中定义,就可以作用于所有的源文件);生命周期:...
阅读全文
摘要:malloc/free与new/delete的区别:相同点:都可用于动态内存分配与释放;不同点:1):操作对象有所不同。malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,所以无法执行构造函...
阅读全文
摘要:本文包含字符串包含问题(isSubstr)、字符串转化为整数(atoi)、统计词频问题(Wordcount)、字符串反转(Reverse)。字符串去除空格等一:字符串包含问题(isSubstr)思路:本程序采用最简单的方法;1、遍历源字符串,当子字符串的首字符与遍历到的字符相同时,就遍历字符串。2、...
阅读全文
摘要:一定义:字符串:字符串是由零个或者多个字符组成的有限串行;子串:字符串中任意个连续的字符组成的子序列,并规定空串是任意串的子串,字符串本身也是子串之一;“abcdefg”,”abc“就是其子串,但是“ade”不属于子串范围。子序列:不要求字符连续,但是其顺序与其在主串中相一致;上例中,“abc”与“...
阅读全文
摘要:头文件:function模板库:用于替代C语言中的函数指针,它允许用户在目标的实现上有更大的弹性,即目标既可以是普通函数,也可以是函数对象和类的成员函数。注意:function模板类为C++11中的新标准,在编译时注意加上 -std=c++0x 的编译选项,适配器bind的实现:1.bind()函数...
阅读全文
摘要:一、普通函数指针我们先来看一个最简单的函数:void fool(int a){ cout #include using namespace std;void fool(int a){ cout 方式调用(pf->*pFunc2)(123124);这里我们还注意到,上述类中含有一个sta...
阅读全文
摘要:这里我们给出一个使用RTTi的例子;考虑一个类层次,我们希望为它实现 operator==相等操作符:如果两个对象的给定数据成员集合的值相同,则它们就相等。每个派生类可以增加自己的成员,当然,测试相等的时候也要包含这些数据。对于类层次中有两个类型(一个基类,一个派生类),按照一般的方法,我们就需要实...
阅读全文
摘要:类型识别分为两种:一种以编译时类型识别,一种是运行时类型识别;编译时类型识别:static_cast;运行时类型识别(RTTI),C++通过下面连个操作符提供RTTi;1)dynamic_cast操作符,将基类类型的指针或者引用安全地转换为派生类型的指针或者引用;2)typeid操作符,返回指针或者...
阅读全文
摘要:本博文我们通过三个程序比较统计词频问题的时间复杂度问题(末尾有用时及其分析);问题描述;1)、找一篇文章,将所有单词输入至程序;(The Bible Holy为例)2)、统计出每个单词的数量,即词频问题;3)、增加停用词功能;(遇到此类词,直接略过)(网上搜)4)、分别统计出读取文件并计算词频时间、...
阅读全文
摘要:本篇我们将实现Queue的简单操作;一、Queue版本1;通过本程序,我们可以看到 pop、push 、back、front、size的简单操作的实现;//Queue.hpp#ifndef QUEUE_H_#define QUEUE_H_#include template //默认的类型形参 >cl...
阅读全文
摘要:有array(数组)、smartptr(智能指针)、stack(栈);一、array:1、我们实现了指针访问和下标访问。C++中指针访问常用迭代器来代替。2、这里我们也揭示了 size_type、iterator、[] 、begin()、end()、size()的真实面目;Array.hpp 1 #...
阅读全文
摘要:由于将函数和类模板放在一块篇幅较大,我们今天将其拆分为两篇博文。上篇博文我们讨论了函数模板的简单应用,本篇我们继续讨论模板的另一板块--类模板。1)、作用:类模板类似于代码产生器,根据用户输入的类型不同,产生不同的class;2)、编译: a):检查模板class 的自身语法; b):根据用户指定的...
阅读全文
摘要:本博文主要讨论函数模板及其简单应用。1)、作用:函数模板可以看做是一种代码产生器,往里面放入具体的类型,得到具体化的函数。2)、编译(分为两步):a):实例化之前,先检查模板本身语法是否正确;b):根据 函数调用调用,先去实例化模板代码,产生具体的函数。也就是说, 没有函数调用,就不会实例化模板代码...
阅读全文
摘要:本博文我们通过重新实现String类 来说明构造函数,复制控制,重载操作符。(本文末尾有完整代码以及测试结果)一、构造函数(包括析构函数):1:默认构造函数;2:用户自己定义的构造函数注意:当用户自己定义时,也要明确显示默认构造函数,这是因为,当我们没有定义自己的构造函数时,编译器会为我们自动合成一...
阅读全文
摘要:本博文我们讨论OOP复制控制的一些内容;首先考虑对象复制的时机: 非引用类型1):根据一个类去显式或者隐式初始化一个对象;2):复制一个对象,将它作为实参传给一个函数;3):从函数返回时复制一个对象。( string tolittle(string word))4):初始化顺序容器中的元素。(例如v...
阅读全文
摘要:本博文我们继续讨论标准模板库STL的关联容器;主要有:pair、map、set。一:pairpair是一种简单的关联类型,不属于容器范围。而是代表一个 key-value键值对。创建、初始化、操作 示例代码如下: 1 #include 2 #include 3 #include 4 using...
阅读全文
摘要:C++中的结构体:(不可访问整个结构体,如:不能一次输出结构体。)1):在C中,结构体只可以含有成员,不可以有函数,但是c++中可以。而且,函数可以直接访问里面的数据成员。2):访问方式a):若是结构体类型的 变量, 采用 . 形式。如:Person.Age_。b):若是结构体类型的 指针, 则采用...
阅读全文
摘要:STL 标准模板库标准模板库(Standard Template Library,缩写:STL)是一个C++软件库, 包括5个组件,分别是:算法、容器、迭代器,函数和适配器。 一:容器之初始化:1.直接初始化一个空的容器;2.用一个容器去初始化另一个容器;3.指定容器的初始大小;4.指定容器的初始大...
阅读全文
摘要:本篇我们讨论一个小程序:实现电话薄简单功能。(一条语句最好一个作用)问题描述 :a) : 实现电话添加记录功能;(电话重复的视为同一人,不予增添);即电话号码唯一。b) : 删除记录功能;(实现提醒功能:确认是否要真的删除)c) : 查询记录功能;(按手机号码查询);待优化功能:1):每次启动程序都...
阅读全文
摘要:本博文主要介绍IO流中fstream,iterator的简单应用。问题描述:a):找一篇文章(The Bble Holy) ,将其所有的单词输入vector中,并统计其单词个数b):增加统计词频功能,用结构体实现(word ,count) ,将结构体存入vector中c):增加停用词功能。 1):...
阅读全文