C++
巴菲特的好弟弟-
这个作者很懒,什么都没留下…
展开
-
C++——STL常用算法
一、概述算法主要由头文件<algorithm>、<functional>、<numeric>组成。①<algorithm>是所以STL头文件中最大的一个,范围涉及比较、交换、查找、便利操作、复制、修改等。②<functional>体积很小,只包括几个序列上面进行简单数学计算的函数模板。③<numeric>定义了一些模板类,用于声明函数对象。二、常用遍历算法①for_each函数原型for_each(iterator be原创 2022-04-11 14:19:44 · 788 阅读 · 0 评论 -
C++——内建函数对象
一、内建函数对象意义①概念:STL内建了一些函数对象。②分类:算术仿函数关系仿函数逻辑仿函数③用法:这些仿函数所产生的对象,用法和一般函数完全相同。使用内建函数对象,需要引入头文件#include<functional>二、算术仿函数功能描述:实现四则运算(加减乘除)起着negate是一元运算,其他都是二元运算仿函数原型template<class T> T plus<T>; //加法仿函数template<class T>原创 2022-04-10 18:21:26 · 542 阅读 · 0 评论 -
C++——谓词
一、概念①返回bool类型的仿函数称为谓词。②如果operator()接受一个参数,那么叫做一元谓词。③如果operator()接受两个参数,那么叫做二元谓词。一元谓词#include <iostream>#include <string>#include <vector>#include<deque>#include<stack>#include<list>#include<set>#include原创 2022-04-10 17:46:12 · 934 阅读 · 0 评论 -
C++——STL函数对象
一、概念①重载函数调用操作符的类,其对象称为函数对象。②函数对象使用重载的()时,行为类似函数调用,也叫仿函数。本质:函数对象是一个类,不是一个函数。二、函数对象的使用特点:①函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值。②函数对象超出普通函数的概念,函数对象可以有自己的状态。③函数对象可以作为参数传递。eg:#include <iostream>#include <string>#include <vector>#incl原创 2022-04-10 17:13:48 · 897 阅读 · 0 评论 -
C++——STL案例
代码:#include <iostream>#include <string>#include <vector>#include<deque>#include<stack>#include<list>#include<set>#include<map>#include <algorithm>using namespace std;#define CHEHUA 0#defin.原创 2022-04-10 16:53:29 · 850 阅读 · 0 评论 -
C++——map/multimap容器
一、map基本概念简介:①map中所以的元素都是pair②pair中第一个元素为key(键值),起到索引左右,第二个元素为value(实值)③所以元素都会根据元素的键值自动排序本质:map/multimap属于关联式容器,底层结构是用二叉树实现。优点:①可以根据key值快速找到value值。map和multimap区别:①map不允许容器中有重复的key值元素。②multimap允许容器中有重复的key值。二、map的构造和赋值include <iostream>#i原创 2022-04-09 18:16:04 · 573 阅读 · 0 评论 -
C++——set/multiset容器
一、set基本概念简介:所以元素都会在插入时自动被排序。本质:set/multiset属于关联式容器,底层结构使用二叉树实现。二、set构造和赋值函数原型构造函数:set<T> st; //默认构造函数set(const set &st); //拷贝构造函数赋值:set& operator=(const set &st); //重载等号操作符三、set的大小和交换函数原型:size(); //返回容器中元素的数目empty();原创 2022-04-08 20:12:28 · 591 阅读 · 0 评论 -
C++——list容器
一、基本概念①功能:将数据进行链式存储链表(list):是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表的指针链接实现的链表的组成:链表由一系列结点组成。结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。STL中的链表是一个双向循环链表(两个指针,一个指向前一个结点,一个指向后一个结点)。链表的迭代器只支持前移和后移,属于双向迭代器。②优缺点优点:采用动态分配,不会造成内存浪费和溢出。指向插入和删除操作方便,只需修改指针即可。缺点:容器遍原创 2022-04-08 19:42:41 · 351 阅读 · 0 评论 -
C++——queue容器
一、基本概念概念:queue是一种先进先出的数据结构。一端插入数据,一端移出数据。队头:出队 pop队尾:入队 push只有队头队尾数据能被访问,不允许有遍历行为二、基本接口①构造函数函数原型queue<T> que; //queue采用模板类实现,queue对象的默认构造形式queue<const queue &que); //拷贝构造函数②赋值操作函数原型queue& operator=(const queue &que);原创 2022-04-08 17:03:31 · 662 阅读 · 0 评论 -
C++——stack容器
一、基本概念概念:stack是一种后进先出的数据结构,只有一个出口。不允许有遍历行为。可以判断容器是否为空,元素个数二、常用接口①构造函数函数原型stack<T> stk; //stack采用模板类实现,stack对象的默认构造形式stack<const stack &stk>; //拷贝构造函数②赋值操作函数原型stack& operator=(const stack &stk); //重载等号操作符③数据存取函数原型原创 2022-04-08 16:51:59 · 648 阅读 · 0 评论 -
C++——deque容器
一、基本概念功能:双端数组,可以对头端进行插入删除操作deque与vector区别:①vector对于头部的插入效率低,数据量越大,效率越低。②deque相对而言,对头部的插入删除速度会比vector块。③vector访问元素时的速度会比deque块,这和两者内部实现有关。工作原理:deque内部有个中控器,维护每段缓冲区的内容,缓冲区中存放真实数据,中控区维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间。二、构造函数功能描述:deque容器构造函数原型:deque原创 2022-04-07 16:14:47 · 207 阅读 · 0 评论 -
C++——vector容器
一、vector容器1.vector与普通数组区别:不同之处在于数组是静态空间的,而vector可以动态拓展动态拓展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝到新空间,释放原空间。2.vector容器的迭代器是支持随机访问的迭代器。二、构造函数函数原型vector<T> v; 采用模板实现类实现,默认构造函数vector(v.begin(),v.end());将v(begin(),end())区间中的元素拷贝给本身vector(n,elem)原创 2022-04-07 14:57:10 · 937 阅读 · 0 评论 -
C++——STL初识
一、为什么需要STL?目的:为了建立一套重复利用的东西使用STL可以避免从事大量重复的工作。为建立数据结构的一套标准,诞生了STL。二、基本概念①STL是标准模板库②STL从广义上分为:容器、算法、迭代器③容器和算法通过迭代器进行无缝连接④STL几乎所以的代码都采用了模板类或模板函数三、STL六大组件1.容器(containers):各种数据结构,如vector, list, deque, set, map等,用来存放数据,从实现的角度来看,STL是一种class template。分原创 2022-04-07 11:08:40 · 677 阅读 · 0 评论 -
C++——string容器
一、string构造函数原型:①string();//创建一个空的字符串类似于string str;②string(const char *s);//使用字符串s初始化cout<<string("hello")<<endl;//此时输出hello;③string(const string &str);//使用一个string对象初始化另一个string对象string str1 = "hello";string str2(str1);cout &原创 2022-04-07 11:48:18 · 170 阅读 · 0 评论