随笔分类 -  C++进阶(含STL)

摘要:一、常用的遍历算法 for_each: 用指定函数依次对指定范围内所有元素进行迭代访问。该函数不得修改序列中的元素。 函数定义。For_each(begin, end, func); template<class _InIt, class _Fn1> inline _Fn1 for_each(_In 阅读全文
posted @ 2018-10-13 18:11 gd_沐辰 阅读(531) 评论(0) 推荐(0) 编辑
摘要:1)预定义函数对象基本概念:标准模板库STL提前定义了很多预定义函数对象,#include <functional> 必须包含。 3)关系函数对象 等于equal_to<Tpye> equal_to<string> stringEqual; sres = stringEqual(sval1,sval 阅读全文
posted @ 2018-10-13 17:52 gd_沐辰 阅读(485) 评论(0) 推荐(0) 编辑
摘要:函数对象和谓词定义 函数对象: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。 这是通过重载类的oper 阅读全文
posted @ 2018-10-13 17:44 gd_沐辰 阅读(360) 评论(0) 推荐(0) 编辑
摘要:算法 1)算法部分主要由头文件<algorithm>,<numeric>和<functional>组成。 2)<algorithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。 3)<numeric>体积很小,只包括几个在序 阅读全文
posted @ 2018-10-13 17:39 gd_沐辰 阅读(543) 评论(0) 推荐(0) 编辑
摘要:C++模板是容器的概念。 本质:所有容器提供的都是值(value)语意,而非引用(reference)语意。容器执行插入元素的操作时,内部实施拷贝动作。所以STL容器内存储的元素必须能够被拷贝(必须提供拷贝构造函数)。 1)除了queue与stack外,每个容器都提供可返回迭代器的函数,运用返回的迭 阅读全文
posted @ 2018-10-13 17:30 gd_沐辰 阅读(115) 评论(0) 推荐(0) 编辑
摘要:1.Map和multimap容器 1)map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。 2)map中key值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。 3)map的具体实现采用红黑树变 阅读全文
posted @ 2018-10-13 17:27 gd_沐辰 阅读(253) 评论(0) 推荐(0) 编辑
摘要:1.Set和multiset容器 1)set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。 2)set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。 3)set不可以直接存取元 阅读全文
posted @ 2018-10-13 16:50 gd_沐辰 阅读(308) 评论(0) 推荐(0) 编辑
摘要:1.优先级队列priority_queue 1)最大值优先级队列、最小值优先级队列 2)优先级队列适配器 STL priority_queue priority_queue<int, deque<int>> pq; priority_queue<int, vector<int>> pq; pq.em 阅读全文
posted @ 2018-10-13 16:17 gd_沐辰 阅读(211) 评论(0) 推荐(0) 编辑
摘要:1.List容器 1) list是一个双向链表容器,可高效地进行插入删除元素。 2)list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符。It++(ok) it+5(err) 3)头文件。#include <list> 2.list对象的默认构造 list采用采用模板类实现,对象的 阅读全文
posted @ 2018-10-13 15:57 gd_沐辰 阅读(292) 评论(0) 推荐(0) 编辑
摘要:1.Queue容器 1)queue是队列容器,是一种“先进先出”的容器。 2)queue是简单地装饰deque容器而成为另外的一种容器。 3)头文件。#include <queue> 2.queue对象的默认构造 queue采用模板类实现,queue对象的默认构造形式:queue<T> queT; 阅读全文
posted @ 2018-10-12 17:40 gd_沐辰 阅读(963) 评论(0) 推荐(0) 编辑
摘要:1.stack容器 1) stack是堆栈容器,是一种“先进后出”的容器。 2)stack是简单地装饰deque容器而成为另外的一种容器。 3)头文件。#include <stack> 2.stack对象的默认构造 stack采用模板类实现, stack对象的默认构造形式: stack <T> st 阅读全文
posted @ 2018-10-12 17:37 gd_沐辰 阅读(377) 评论(0) 推荐(0) 编辑
摘要:1.Deque容器 1)deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的。 2)deque在接口上和vector非常相似,在许多操作的地方可以直接替换。 3)deque可以随机存取元素(支持索引值直接存取, 阅读全文
posted @ 2018-10-12 17:32 gd_沐辰 阅读(411) 评论(0) 推荐(0) 编辑
摘要:迭代器基本原理 1.迭代器是一个“可遍历STL容器内全部或部分元素”的对象。 2.迭代器指出容器中的一个特定位置。 3.迭代器就如同一个指针。 4.迭代器提供对一个容器中的对象的访问方法,并且可以定义了容器中对象的范围。 迭代器的类别: 输入迭代器:也有叫法称之为“只读迭代器”,它从容器中读取元素, 阅读全文
posted @ 2018-10-12 17:23 gd_沐辰 阅读(279) 评论(0) 推荐(0) 编辑
摘要:1.Vector容器 1)vector是将元素置于一个动态数组中加以管理的容器。 2)vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲)。 3)vector尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比较费时 2.vector对象的默认 阅读全文
posted @ 2018-10-12 17:03 gd_沐辰 阅读(203) 评论(0) 推荐(0) 编辑
摘要:1.String概念 string是STL的字符串类型,通常用来表示字符串。而在使用string之前,字符串通常是用char*表示的。string与char*都可以用来表示字符串,那么二者有什么区别呢。 string和char*的比较: 1.string是一个类, char*是一个指向字符的指针。 阅读全文
posted @ 2018-10-12 16:53 gd_沐辰 阅读(187) 评论(0) 推荐(0) 编辑
摘要:一、什么是STL STL(Standard Template Library,标准模板库)的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由 阅读全文
posted @ 2018-10-12 16:43 gd_沐辰 阅读(3276) 评论(0) 推荐(0) 编辑
摘要:文件I/O 操作主要有以下几种: 1.文件输入流 ifstream 2.文件输出流 ofstream 3.文件输入输出流 fstream 4.文件的打开方式 5.文件流的状态 6.文件流的定位:文件指针(输入指针、输出指针) 7.文本文件和二进制文件 文件流类和文件流对象 输入输出是以系统指定的标准 阅读全文
posted @ 2018-10-07 17:58 gd_沐辰 阅读(405) 评论(0) 推荐(0) 编辑
摘要:一、标准输入流 标准输入流对象cin,重点掌握的函数 cin.get() //一次只能读取一个字符 cin.get(一个参数) //读一个字符 cin.get(三个参数) //可以读字符串 cin.getline() cin.ignore() cin.peek() cin.putback() 标准输 阅读全文
posted @ 2018-10-07 16:49 gd_沐辰 阅读(452) 评论(0) 推荐(0) 编辑
摘要:概念: 程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件。 C++输入输出包含以下三个方面的内容: 1.对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。 2.以外存磁盘文件为对象进行输入和输出 阅读全文
posted @ 2018-10-07 16:26 gd_沐辰 阅读(1475) 评论(0) 推荐(0) 编辑
摘要:1)throw的异常是有类型的,可以使,数字、字符串、类对象。 2)throw的异常是有类型的,catch严格按照类型进行匹配。 3)注意 异常对象的内存模型 。 一、 传统处理错误 二、throw int类型异常 三、throw字符类型异常 四、throw类对象类型异常 异常的层次结构(继承在异常 阅读全文
posted @ 2018-10-07 16:07 gd_沐辰 阅读(521) 评论(0) 推荐(0) 编辑