惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
L
LangChain Blog
U
Unit 42
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
Martin Fowler
Martin Fowler
T
Tenable Blog
IT之家
IT之家
H
Help Net Security
阮一峰的网络日志
阮一峰的网络日志
Forbes - Security
Forbes - Security
N
Netflix TechBlog - Medium
The Hacker News
The Hacker News
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
Tailwind CSS Blog
美团技术团队
NISL@THU
NISL@THU
T
Threatpost
GbyAI
GbyAI
T
Threat Research - Cisco Blogs
I
InfoQ
Jina AI
Jina AI
Microsoft Azure Blog
Microsoft Azure Blog
人人都是产品经理
人人都是产品经理
C
Check Point Blog
V
Vulnerabilities – Threatpost
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Spread Privacy
Spread Privacy
S
Securelist
大猫的无限游戏
大猫的无限游戏
P
Privacy & Cybersecurity Law Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
爱范儿
爱范儿
小众软件
小众软件
C
Cybersecurity and Infrastructure Security Agency CISA
Cisco Talos Blog
Cisco Talos Blog
Engineering at Meta
Engineering at Meta
S
Security Affairs
S
Secure Thoughts
T
Troy Hunt's Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
PCI Perspectives
PCI Perspectives
C
Cisco Blogs
MongoDB | Blog
MongoDB | Blog
Vercel News
Vercel News
月光博客
月光博客
Recorded Future
Recorded Future

博客园 - saintqdd

hdu 1102 pku 2421 解题报告 pku 2777 Count Color 解体报告 石子合并问题 nkoj1139和乘积最大那题一样. A Tour in Loquat Orchard (FZU 2007 ICPC Qualification Round I tzw) 最大黑区域 滑雪 一道经典题,humble number 今天碰到了一个很诡异的题,Alphacode (zoj 2202) 这两天经常碰到dp题,就写了一个0-1背包 实训以来,到这里的次数少了! 郁闷,乘积最大那题WA原来只是因为我用了pow函数引起的! Smith Number POJ强烈推荐50题 JOJ 2391 words POJ 1014 三十分钟掌握STL POJ1006,中国剩余定理 POJ1003,简单题
STL学习小记
saintqdd · 2007-08-04 · via 博客园 - saintqdd

转自:http://blog.chinaunix.net/u/23224/showart.php?id=181144

STL(Standard Template Libarary)主要提供了三类工具:容器container,迭代器iterato,算法

algorithm。
STL提供了两类容器:序列容器——以线性序列方式组织对象;
                关联容器——用关联的键把对象组织在一起。

序列容器:有三种基本类型,分别对应于模版vector<T>,deque<T>和list<T>。他们都存储了一组特定类

型T的对象,这些对象以线性序列方式组织,但每个容器都可以访问以不同方式优化的内容。

vector<T>动态的增加对象的个数,他的大小小于或者等于他的容量。他在尾部删除和添加是最高效的,

相当于简单的数组的组织方式。

deque<T>动态的增加对象的个数,他的大小等于它的容量,他没有capacity()成员函数,他在两端添加和

删除是最高效的。他和vector<T>一样在中间添加和删除,过程比较慢,需要复制已有的元素。由于内部

组织方式不同,deque容器用起来比vector容器略慢。

list<T>的内部组织方式是双向链表,可以在序列的任意位置高效的插入和删除元素。他的主要限制是随

机访问元素比较慢,因为这需要从list的第一个元素或者最后一个元素开始遍历整个list,查找每个元素

所以要根据他们的特点来选择合适的容器。

关联容器:允许使用健存储和提取综合类型的对象。
关联容器有四个基本类型:map<Key,T>,multimap<Key,T>,set<Key>和multiset<Key>。
下略:

STL迭代器,下面迭代器的功能是累加的,输入输出迭代器功能最弱,随机访问迭代器功能最强。
输入输出迭代器:用于读取一些列的对象,且只能使用一次。如需要二次读写序列,就必须创建一个新的

输入输出迭代器。
向前迭代器:合并了输入输出迭代器,可以多次使用。
双向迭代器:与向前迭代器一样,但可以向前向后遍历一系列对象。
随机访问迭代器:提供的功能和双向迭代器相同,还可以随机读写元素。

每种迭代器在运算方面都有限制。
不同的容器支持不同的迭代器。
vector和deque容器支持随机访问迭代器;List,map,multimap,set,multiset容器支持双向迭代器。

STL算法:
STL算法是STL中最大的工具集合。不是所有的算法都和应用程序有关,其中的一些算法还有专门的用途。
算法主要分为三大类:
1:不修改序列的操作:find(),find_end(),find_first(),adjacent_find(),count(),mismatch

(),search(),equal();
2:修改序列的操作:修改序列中的元素。swap(),copy(),transform(),replace(),remove(),reverse

(),rotate(),fill(),radom_shuffle();
3:排序、合并和相关的操作:在一些情况下会改变序列的顺序。sort(),stable_sort(),binary_search

(),merge(),min(),max(),lexicographical_compare().
数值算法:accumulate<>,adjacent_difference<>,inner_product<>,partial_sum<>.

函数对象:重载了函数调用运算符operator()的类对象,专门用于作为参数传送给函数,其效率比使用原

始的函数指针更高。

STL头文件:
<vector>:单端口数组容器
<deque>:双端口数组容器
<list>:双向链表容器
<map>:map和multimap关联数组容器
<set>:set和multiset已排序的设置容器
<bitset>:表示位序列的对象
<queue>:双端口队列(容器适配器)
<stack>:堆栈(容器适配器)
支持迭代器,需要头文件<iterator>,容器头文件中包含迭代器头文件;<map>头文件包含<utility>头文

件,这个头文件中包含定义和管理map和multimap容器所使用的键/值对所需的声明。
算法的声明在头文件<algorithm>中,函数对象的支持由<functional>头文件的声明提供。
数值算法在头文件<numeric>中声明,另外还有<complex>头文件提供复杂数字的支持,<valarray>头文件

提供了数值数组的支持。
另外在流文件集合中还声明了一些迭代器,如:<iostream>,<istream>,<ostream>,<sstream>。这些头文

件利用STL支持基于基本STL算法的输入输出。