随笔分类 - C++学习
摘要:5.6 常用集合算法 算法简介: set_intersection //求两个容器交集 set_union //求两个容器并集 set_difference //求两个容器差集 5.6.1 set_intersection //求两个容器交集 函数原型:set_intersection(iterat
阅读全文
摘要:5.5 常用算术生成算法 注意:算术生成算法属于小型算法,使用时包含头文件为 #include<numeric>; accumulate //计算容器元素累计总和 fill //向容器中添加元素 5.5.1 accumulate //计算容器元素累计总和 函数原型:accumulate(iterat
阅读全文
摘要:5.4 常用拷贝和替换算法 算法简介: copy //容器内指定范围的元素拷贝到另一个容器中 replace //将容器内指定范围的旧元素修改为新元素 replace_if //容器内指定范围满足条件的元素替换为新元素 swap //互换两个容器的元素 5.4.1 copy //容器内指定范围的元素
阅读全文
摘要:5.3 常用排序算法 学习目标:掌握常用的排序算法 算法简介:sort //对容器内元素进行排序 random_shuffle //洗牌 指定范围内的元素随机调整次序 merge //容器元素合并,并存储到另一个容器 reverse //反转指定范围内的元素 5.3.1 sort //对容器内元素进
阅读全文
摘要:5.2 常用查找算法 算法简介:find //查找元素 find_if //按条件查找元素 adjacent_find //查找到相邻重复元素 binary_search //二分法查找 count //统计元素个数 count_if //按条件统计元素个数 5.1 find 功能描述:查找指定元素
阅读全文
摘要:5 STL-常用算法 概述: 算法主要由头文件<algorithm>、<functional>、<numeric>组成; <algorithm>是所有STL头文件中最大的,范围涉及到比较、交换、查找、遍历、复制、修改等; <numeric>体积很小,只包括几个序列上面进行简单数学运算的模板函数 <f
阅读全文
摘要:4.3.1 内建函数对象意义 概念:STL内建了一些函数对象 分类: 1、算术仿函数; 2、关系仿函数; 3、逻辑仿函数; 用法:这些仿函数所产生的对象,用法和一般函数完全相同 使用内建函数对象,需要引入头文件#include<functional> 4.3.2 算术仿函数 #include<ios
阅读全文
摘要:4.2 谓词 4.2.1 谓词概念 概念: 返回bool类型的仿函数称为谓词(Pred) 返回operator()接受一个参数,那么叫做一元谓词 返回operator()接受两个参数,那么叫做两元谓词 4.2.2 一元谓词 #include<iostream> using namespace std
阅读全文
摘要:4.1 函数对象 4.1.1 函数对象概念 概念: 1、重载函数调用操作符的类,其对象常称为函数对象 2、函数对象使用重载的()时,行为类似函数调用,也叫仿函数 本质: 函数对象(仿函数)是一个类,不是一个函数 4.1.2 函数对象使用 特点: 1、函数对象在使用时,可以像普通函数那样调用,可以有参
阅读全文
摘要:3.9 map/multimap容器 3.9.1 map基本概念 简介: 1、map中所有元素都是pair 2、pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值) 3、所有元素都会根据元素的键值自动排序 本质:map/multimap属于关联式容器,底层结构是用二叉树
阅读全文
摘要:3.8.7 pair对组创建 功能描述:成对出现的数据,利用对组可以返回两个数据 两种创建方式: pair<type,type> p (value1,value2); pair<type,type> p = make_pair(value1,value2); #include<iostream> u
阅读全文
摘要:3.8 set/multiset容器 3.8.1 set基本概念 简介:所有元素都会在插入时自动被排序 本质:set/multiset属于关联式容器,底层结构是用二叉树实现 set和multiset区别: set不允许容器中有重复的元素 multiset允许容器中有重复元素 3.8.2 set构造与
阅读全文
摘要:3.7 list容器 3.7.1 list基本概念 功能:将数据进行链式存储 链表(list)是一种物理存储单元格上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的; 链表的组成:链表由一系列结点组成; 结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域 ST
阅读全文
摘要:3.6 queue容器 3.6.1 queue基本概念 概念:queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口(滑滑梯~先进去的小朋友先出来) 队列容器允许从一端新增元素,从另一端移除元素 队列中只有队头和队尾才可以被外界使用,因此队列中不允许有遍历
阅读全文
摘要:#include<iostream> #include<string> #include<vector> #include<deque> #include<algorithm> //标准算法头文件 #include<ctime> using namespace std; //选手类 class Pe
阅读全文
摘要:3.3 deque容器 3.3.1 deque基本概念 功能:双端数组,可以对头端进行插入删除操作 deque与vector区别: 1、vector对于头部的插入删除效率低,数据量越大,效率越低; 2、deque相对而言,对头部的插入删除速度比vector快; 3、vector访问元素时的速度会比d
阅读全文
摘要:3.2 vector容器 3.2.1 vector基本概念 功能:vector数据结构和数组非常相似,也称为单端数组; vector与普通数组区别:数组是静态空间,而vector是可以动态扩展的。 动态扩展: 并不是在原有空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间
阅读全文
摘要:3.1 string容器 3.1.1 string基本概念 本质:string是C++风格的字符串,而string本质上是一个类 string和char*区别: 1、char*是一个指针 2、string是一个类,类内封装了char*,管理这个字符串,是一个char*型的容器。 特点:string类
阅读全文
摘要:2.1 STL的诞生 长久以来,软件界一直希望建立一种可重复利用的东西;C++的面向对象和泛型编程思想,目的就是提升代码的复用性。大多数情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复的工作,为建立一套数据结构和算法的标准,诞生了STL; 2.2 STL基本概念 STL(Standard
阅读全文
摘要:1.1 函数模板 C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板 C++提供两种模板机制1:函数模板和类模板 1.1.1 函数模板语法 函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。 语法:template <typename T>
阅读全文