10 2018 档案
摘要:一、常用的遍历算法 for_each: 用指定函数依次对指定范围内所有元素进行迭代访问。该函数不得修改序列中的元素。 函数定义。For_each(begin, end, func); template<class _InIt, class _Fn1> inline _Fn1 for_each(_In
阅读全文
摘要:1)预定义函数对象基本概念:标准模板库STL提前定义了很多预定义函数对象,#include <functional> 必须包含。 3)关系函数对象 等于equal_to<Tpye> equal_to<string> stringEqual; sres = stringEqual(sval1,sval
阅读全文
摘要:函数对象和谓词定义 函数对象: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。 这是通过重载类的oper
阅读全文
摘要:算法 1)算法部分主要由头文件<algorithm>,<numeric>和<functional>组成。 2)<algorithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。 3)<numeric>体积很小,只包括几个在序
阅读全文
摘要:C++模板是容器的概念。 本质:所有容器提供的都是值(value)语意,而非引用(reference)语意。容器执行插入元素的操作时,内部实施拷贝动作。所以STL容器内存储的元素必须能够被拷贝(必须提供拷贝构造函数)。 1)除了queue与stack外,每个容器都提供可返回迭代器的函数,运用返回的迭
阅读全文
摘要:1.Map和multimap容器 1)map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。 2)map中key值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。 3)map的具体实现采用红黑树变
阅读全文
摘要:1.Set和multiset容器 1)set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。 2)set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。 3)set不可以直接存取元
阅读全文
摘要:1.优先级队列priority_queue 1)最大值优先级队列、最小值优先级队列 2)优先级队列适配器 STL priority_queue priority_queue<int, deque<int>> pq; priority_queue<int, vector<int>> pq; pq.em
阅读全文
摘要:1.List容器 1) list是一个双向链表容器,可高效地进行插入删除元素。 2)list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符。It++(ok) it+5(err) 3)头文件。#include <list> 2.list对象的默认构造 list采用采用模板类实现,对象的
阅读全文
摘要:1.Queue容器 1)queue是队列容器,是一种“先进先出”的容器。 2)queue是简单地装饰deque容器而成为另外的一种容器。 3)头文件。#include <queue> 2.queue对象的默认构造 queue采用模板类实现,queue对象的默认构造形式:queue<T> queT;
阅读全文
摘要:1.stack容器 1) stack是堆栈容器,是一种“先进后出”的容器。 2)stack是简单地装饰deque容器而成为另外的一种容器。 3)头文件。#include <stack> 2.stack对象的默认构造 stack采用模板类实现, stack对象的默认构造形式: stack <T> st
阅读全文
摘要:1.Deque容器 1)deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的。 2)deque在接口上和vector非常相似,在许多操作的地方可以直接替换。 3)deque可以随机存取元素(支持索引值直接存取,
阅读全文
摘要:迭代器基本原理 1.迭代器是一个“可遍历STL容器内全部或部分元素”的对象。 2.迭代器指出容器中的一个特定位置。 3.迭代器就如同一个指针。 4.迭代器提供对一个容器中的对象的访问方法,并且可以定义了容器中对象的范围。 迭代器的类别: 输入迭代器:也有叫法称之为“只读迭代器”,它从容器中读取元素,
阅读全文
摘要:1.Vector容器 1)vector是将元素置于一个动态数组中加以管理的容器。 2)vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲)。 3)vector尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比较费时 2.vector对象的默认
阅读全文
摘要:1.String概念 string是STL的字符串类型,通常用来表示字符串。而在使用string之前,字符串通常是用char*表示的。string与char*都可以用来表示字符串,那么二者有什么区别呢。 string和char*的比较: 1.string是一个类, char*是一个指向字符的指针。
阅读全文
摘要:一、什么是STL STL(Standard Template Library,标准模板库)的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由
阅读全文
摘要:文件I/O 操作主要有以下几种: 1.文件输入流 ifstream 2.文件输出流 ofstream 3.文件输入输出流 fstream 4.文件的打开方式 5.文件流的状态 6.文件流的定位:文件指针(输入指针、输出指针) 7.文本文件和二进制文件 文件流类和文件流对象 输入输出是以系统指定的标准
阅读全文
摘要:一、标准输入流 标准输入流对象cin,重点掌握的函数 cin.get() //一次只能读取一个字符 cin.get(一个参数) //读一个字符 cin.get(三个参数) //可以读字符串 cin.getline() cin.ignore() cin.peek() cin.putback() 标准输
阅读全文
摘要:概念: 程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件。 C++输入输出包含以下三个方面的内容: 1.对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。 2.以外存磁盘文件为对象进行输入和输出
阅读全文
摘要:1)throw的异常是有类型的,可以使,数字、字符串、类对象。 2)throw的异常是有类型的,catch严格按照类型进行匹配。 3)注意 异常对象的内存模型 。 一、 传统处理错误 二、throw int类型异常 三、throw字符类型异常 四、throw类对象类型异常 异常的层次结构(继承在异常
阅读全文
摘要:1)异常是一种程序控制机制,与函数机制独立和互补 函数是一种以栈结构展开的上下函数衔接的程序控制系统,异常是另一种控制结构,它依附于栈结构,却可以同时设置多个异常类型作为网捕条件,从而以类型匹配在栈机制中跳跃回馈. 2)异常设计目的: 栈机制是一种高度节律性控制机制,面向对象编程却要求对象之间有方向
阅读全文
摘要:一、类型转换名称和语法 1.C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a 2.C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 static_cast 静态类型转换。如int转换成char reinterpreter
阅读全文
摘要:特性: 1.从类模板实例化的每个模板类有自己的类模板数据成员,该模板类的所有对象共享一个static数据成员 2. 和非模板类的static数据成员一样,模板类的static数据成员也应该在文件范围定义和初始化 3.每个模板类有自己的类模板的static数据成员副本 原理图: 模板小结: 1.模板是
阅读全文
摘要:一、所有的类模板函数写在类的内部和写在类的外部,在一个cpp中 1.构造函数,没有问题; 2.普通函数,没有问题; 3.友元函数:用友元函数重载 << >> friend ostream& operator<< <T> (ostream &out, Complex<T> &c3) ; 友元函数:友元
阅读全文
摘要:为什么需要类模板? 类模板与函数模板的定义和使用类似,我已经进行了介绍。 有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类: 作用: 1.类模板用于实现类所需数据的类型参数化 2.类模板在表示如数组、表、图等数据结构显得特别重要,这些数据结构的表示和算法不受所包含的元
阅读全文
摘要:思考:为什么函数模板可以和函数重载放在一块。C++编译器是如何提供函数模板机制的? 一、编译器编译原理 什么是gcc gcc(GNU C Compiler)编译器的作者是Richard Stallman,也是GNU项目的奠基者。 什么是gcc:gcc是GNU Compiler Collection的
阅读全文
摘要:一、函数模板做函数参数 二、函数模板遇上函数重载 函数模板和普通函数区别结论: 1.函数模板不允许自动类型转化 2.普通函数能够进行自动类型转换 函数模板和普通函数在一起,调用规则: 1 函数模板可以像普通函数一样被重载 2 C++编译器优先考虑普通函数 3 如果函数模板可以产生一个更好的匹配,那么
阅读全文
摘要:为什么要有函数模板? 需求:写n个函数,交换char类型、int类型、double类型变量的值。 案例: 函数模板语法 函数模板定义形式 template < 类型形式参数表 > 类型形式参数的形式为: typename T1 , typename T2 , …… , typename Tn 或 c
阅读全文