
STL
东东7_7
这个作者很懒,什么都没留下…
展开
-
STL模板——常用算法
常用的遍历算法 //for_each() 用于遍历 //transfrom() 用于将一个容器搬运到另一个容器中 void test2() { vector<int>v; for (int i = 0; i < 10; i++) { v.push_back(i); } for_each(v.begin(), v.end(), [](int va){cout << va <<" "; }); cout原创 2020-11-30 21:17:19 · 119 阅读 · 0 评论 -
函数对象,谓词,内建函数对象,适配器
函数对象(仿函数) 重载函数调用操作符号的类,就是类似于函数的对象,其实就是重载了()这个操作符,使类对象可以像函数那样使用,其中需要一个参数称为一元仿函数,两个参数为二元仿函数 class Print { public: void operator()() { cout <<"hellow world"<<endl; } }; void pri () { cout<<"hellow world"<<endl; } int main { Prin原创 2020-11-29 20:54:22 · 121 阅读 · 0 评论 -
map/multimap容器
前言 map的特性和set一样,就是他们都会自动的排序,其中map所有的元素都是pair,同时拥有实值和键值,第一个元素为实值,第二个为键值,map不允许有两个相同的元素 map和list有一些相似,就是他们中有删除现象出现的时候。不会影响迭代器,其实map和multimap的底层实现原理都是红黑树,multimap和map区别就是key可以重复 常用的接口 map构造函数 map<T1, T2> mapTT;//map默认构造函数: map(const map &mp);//拷贝构造函原创 2020-11-28 13:35:12 · 109 阅读 · 0 评论 -
set/multiset容器
set容器 set容器的特性,所有元素的都会根据元素的键值自动被排序,set的元素不像map那样可以同时拥有实值和键值,set元素及是键值也是实值,所以我们不能通过迭代器改变set元素值,会破坏set结构 multiset容器 他和set容器基本一样,唯一的区别就是multiset容器可以重复,他们的底层实现都是红黑树 常用函数接口 set构造函数 set<T> st;//set默认构造函数: mulitset<T> mst; //multiset默认构造函数: set(const原创 2020-11-25 21:50:03 · 150 阅读 · 0 评论 -
list容器
前言 链表是一种物理存储单位上非连续,非顺序的存储结构,相比于vector就负责多了,它可以很精准的使用空间,而不浪费,list是一个双向链表 list的迭代器 list容器不能像vector一样以普通指针作为迭代器,因为其结点不能保证在同一块连续的空间上,他的结点都是去访问下一个成员(通过指针),由于list是双向链表,所以它具有向前和向后的能力,还有一点就是插入和删除不会导致原来的迭代器失效 list构造函数 list<T> lstT;//list采用采用模板类实现,对象的默认构造形式: l原创 2020-11-25 20:21:23 · 156 阅读 · 0 评论 -
deque容器
前言 vector容器是单向开口的连续空间,deque是一个双向开口的容器,就是可以在头部和尾部做插入和删除的操作,当然vector也可以在开口处插入,但是效率奇低 vector和deque最大的差别就是允许在头部进行插入,其二是他没有容量的概念,他是动态的将分段连续的空间组合起来,但是缺点就是他的运算很麻烦,他的迭代器不是普通的指针,他们的运算量不是一个量级的,所以在用到排序算法的时候,应当尽可能使用vector然后再倒回deque deque的实现原理 deque是一段一段连续的空间组成的,一旦有新的数原创 2020-11-24 22:50:17 · 321 阅读 · 1 评论 -
vector容器
前言 vector的数据安排以及操作方式,与数组十分相似,他们的唯一差别就是数组是静态空间,而vector是动态空间,当他要去扩容空间的时候,编译器内部会帮助我们去寻找一片新的空间,自动释放以前旧的空间。 在vector的实现技术中,关键在于他对空间的重新分配,所以我们就有了很多空间分配策略 vector迭代器 vector维护一个线性空间,所以无论元素类别如何,普通指针都可以作为vector的迭代器,所以++,–,+=,-=普通的指针都具备,所以vector提供的是随机访问迭代器 vector的数据结构原创 2020-11-24 14:27:50 · 115 阅读 · 0 评论 -
C++类模板
定义 与函数模板类似,类也可以通过参数泛化,从而可以构建出一族不同型别的类实例(对象) 类模板实参可以是某一型别或常量(仅限int或enum) 实例 //定义类模板,并向其中传入常量num,泛化两个类型,T1,T2 template <typename T1, typename T2,int num=1000> class stu { public: T1 math; T1 chinese; T2 name; stu( T1 math_t,T1 chinese原创 2020-11-22 13:59:27 · 108 阅读 · 0 评论 -
模板观念和函数模板
定义 模板是C++的一种特性,允许函数或类(对象),通过泛型的形式表现或运行 模板可以使函数或类在对应不同的型别的时候正常工作,无需为每一个型别都写一份代码 两种模板 类模板:使用泛型参数的类 函数模板:使用泛型参数的函数 模板实例化 模板的声明其实并未给出一个函数或类的完全定义,只是提供了一个函数或类的语法框架 实例化是从模板构建出 ...原创 2020-11-21 15:22:11 · 102 阅读 · 0 评论