STL 小结

看C++ STL一个月了,小结下这个阶段的学习所得;

容器是以class template完成;内存管理师由memory pool完成;算法是由function template完成;仿函数(函数对象)是一种将operation ( )重载了的class template;迭代器是泛型指针,也是种智能指针,将operator++、operator * 等指针习惯行为重载的class template; 配接器是将一个class的接口转换为另一个class的接口,是原本接口不兼容而不能合作的class可以一起运作,container
adapters内含了一个container member(stack和quene内涵了deque,set和map是内含了RBTree,priority quene内含了heap) ,iterator adapters内含了迭代器成员或者指针,function adapters内涵一个函数指针。

下面这张图显示了STL六大组件之间的关系

Container使用Allocator管理内存空间,Algorithms使用Contatiner内涵的Iterators以及搭配使用Iterator Adapters、Function object(搭配使用Function Adapters)来完成算法操作。

STL中使用到型别技术、配置器、迭代器等都是加上了一层封装使得操作具有间接性,这种间接性又使得形成了抽象性.......

OK这一阶段的学习告一段落,收获颇丰!

时间: 2024-11-01 11:01:59

STL 小结的相关文章

STL小结

vector常用的函数 ? begin() end() size() empty() capacity() front() back() push_back() pop_back() erase(iterator position) ? erase(iterator first, iterator last) //迭代器last指向的那个元素是不清除的 ? insert(position,n,x) ? ? ? resize() clear() 提供随机存取迭代器 list容器 STL中list是

STL——STL小结

·这个就是个偷懒的玩意儿 一.介绍: ·STL:标准模板库.Standard Template Library ·STL中有神马???: pairvector, stack, queue, dequepriority_queuemap, setalgorithmcmp与运算符重载  二.Pair ·#include <utility>·里面有两个元素first和second.可以比较大小,先比first再比second. #include <cstdio> #include <

STL 队列 、优先队列、栈 小结

学长说现在基本上可以开始学习STL中一些标准模板了,今天先总结一下 队列.栈.优先队列 1.队列(queue) 先进先出原则,头文件#include <queue>,定义结构queue<类型>名称;queue<int>q.queue<node>q等: 如: struct node { int x; }f; queue<node>q;//结构体类型队列 q.push(f) //将f压入队列的尾部 node t = q.pop()// 弹出队列的第一

C++ STL 知识小结

qwq...接近联赛,就在这里对STL做一点知识小结吧,因为STL曾经失分很多. 简介 (来自Baidu) STL是Standard Template Library的简称,中文名标准模板库,惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R Musser在惠普实验室工作时所开发出来的.从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合.这里的“容器”和算法

STL学习小结

STL就是Standard Template Library,标准模板库.这可能是一个历史上最令人兴奋的工具的最无聊的术语.从根本上说,STL是一些"容器"的集合,这些"容器"有list, vector,set,map等,STL也是算法和其它一些组件的集合.这里的"容器"和算法的集合指的是世界上非常多聪明人非常多年的杰作.是C++标准库的一个重要组成部分,它由Stepanov and Lee等人最先开发,它是与C++差点儿同一时候開始开发的:一開

小结:STL

概要: c++的stl是个神奇的东西,需要好好学习. 技巧及注意: lower_bound是第一个大于等于要查找值 upper_bound是第一个大于要查找的值 stl中的容器中的比较几乎全都用<,比如priority_queue可以重载<为">"的含义实现小根堆.lower_bound也可以重载<,实现找到最后一个大于等于要查找值(二分的lis就是这么实现的). stl容器的操作几乎并且最好都使用迭代指针来进行,比如你查找一个元素(你的元素都不只一个变量,但是

STL中的算法小结

(1)要运用STL的算法,首先必须包含头文件<algorithm>,某些STL算法用于数值处理,因此被定义于头文件<numeric> (2)所有STL算法都被设计用来处理一个或多个迭代器区间,第一个区间通常以起点和终点表示,至于其他区间,多数情况下你只需提供起点便足以,其终点可以自动以第一个区间的元素数量推断出来,调用者必须保证这些区间的有效性. STL算法采用覆盖模式而非安插模式,所以调用者必须保证目标区间拥有足够的元素空间,当然你也可以运用特殊的安插型迭代器将覆盖模式改变为安插

STL容器小结

 1.空间分配器 std::alloc用于容器中内存空间的分配和释放,以及分配内存的管理.construct().destroy()等全局函数用于为对象的构造和析构. 2.迭代器和trains 迭代器将容器和算法联系起来,行为类似指针.各个容器都自己实现自己的迭代器,最重要的是对operator*和operator-> 进行重载.每个迭代器里都定义了一些类型,包括所指对象的类型.trains将这些类型提取出来. STL的容器可以分为以下几个大类:一:序列容器, 有vector, list, de

STL Non-mutating Algorithms小结

C++ STL中有许多非变易算法,这些算法不破坏操作数据,用来对序列数据进行逐个处理(for_each).元素查找(find).子序列搜索(find_first_of).统计和匹配(count和mismatch)等.非变易算法在实现各种大型复杂一点的算法的时候比较方便,而且比较稳定,这也是STL本身固有的特点.主要列出以下几种,参考了叶志军的那本<C++ STL开发技术导引>,同时也结合网站Cplusplus.com(http://www.cplusplus.com/),查看其实现的原理,以及