(C/C++学习笔记) 二十二. 标准模板库
二十二. 标准模板库
● STL基本介绍
|
标准模板库(STL, standard template library): C++提供的大量的函数模板(通用算法)和类模板。 ※ 为什么我们一般不需要自己写模板?因为STL里已经为我们写好了。我们的任务是:学会使用它们。 STL(Standard Template Library),即标准模板库,由惠普实验室(HP Labs)开发, 是一个具有工业强度的、高效的C++程序库。它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分。 该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法,为广大C++程序员们提供了一系列具有良好结构的通用C++组件,它们都是可扩展的应用框架,高度体现了软件的可复用性。这种现象有些类似于Microsoft Visual C++中的MFC(Microsoft Foundation Class Library). STL是最新的C++标准函数库中的一个子集,这个庞大的子集占据了整个库大约80%的分量。 ※ 常见的C++组件有4种:类(class)、集合和容器(collection and container)、类库(class library)、应用框架(applicationframework)。 虽然STL是一个模板库,但其中也包含了其它一些内容。 一般来说,STL由如下的六大部分组成:容器(Containers)、算法(Algorithms) 、迭代器(Iterators) 、仿函数(Functors) 、配接器(Adapters) 、配置器(Allocators)。 核心是容器(数据结构), 算法, 迭代器(指向容器元素的指针). STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器)。几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。 在C++标准中,STL被组织为13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。 |
● 容器
|
容器: STL容器是一种class template, 用于管理数据的集合, 包括各种数据结构 包含在头文件<vector>, <list>, <deque>, <map>,<set>中 |
|||||||||||||||||||||||||||||||||
|
容器分为序列式容器(sequential container)和关联式容器(associative container)。 序列式容器主要有:vector, list, deque 关联式容器/结合式容器主要有:map,multimap,set,multiset, hash table |
|||||||||||||||||||||||||||||||||
|
● 算法
|
算法: STL算法是function template STL中的算法部分由头文件<algorithm>、<numeric>和<functional>组成。 STL提供了大约100个实现算法的模板函数,比如sort, search, copy, erase等, 用户可以通过调用一两个算法模板就可以完成所需要的功能. |
● 迭代器
|
迭代器: STL迭代器是class template. 在面向对象编程中,一个迭代器是一个对象,更准确地说, 是指向容器元素的指针, 它允许遍历其它对象的元素,通常是容器或列表。 In object-oriented programming, an iterator is an object, or rather, which allows one to sequence through all of the elements contained in some other object, typically a container or list. |
● C++标准库的成分
|
C++标准库: 可分为两部分:C++语言本身和C++标准库。 |
|
※ C++标准库中存在两套C的函数库, 一套是带有.h扩展名的, 而另一套则没有, 并且它们确实没有太大的不同. |
(C/C++学习笔记) 二十二. 标准模板库的更多相关文章
- VSTO 学习笔记(十二)自定义公式与Ribbon
原文:VSTO 学习笔记(十二)自定义公式与Ribbon 这几天工作中在开发一个Excel插件,包含自定义公式,根据条件从数据库中查询结果.这次我们来做一个简单的测试,达到类似的目的. 即在Excel ...
- 汇编入门学习笔记 (十二)—— int指令、port
疯狂的暑假学习之 汇编入门学习笔记 (十二)-- int指令.port 參考: <汇编语言> 王爽 第13.14章 一.int指令 1. int指令引发的中断 int n指令,相当于引 ...
- Binder学习笔记(十二)—— binder_transaction(...)都干了什么?
binder_open(...)都干了什么? 在回答binder_transaction(...)之前,还有一些基础设施要去探究,比如binder_open(...),binder_mmap(...) ...
- STL学习系列一:STL(标准模板库)理论基础
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的从广 ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- Android学习笔记(十二)——实战:制作一个聊天界面
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 运用简单的布局知识,我们可以来尝试制作一个聊天界面. 一.制作 Nine-Patch 图片 : Nine-Pa ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- JavaScript学习笔记(十二)——箭头函数(Arrow Function)
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- ASP.NET Core 2 学习笔记(十二)REST-Like API
Restful几乎已算是API设计的标准,通过HTTP Method区分新增(Create).查询(Read).修改(Update)和删除(Delete),简称CRUD四种数据存取方式,简约又直接的风 ...
- 如鹏网学习笔记(十二)HTML5
一.HTML5简介 HTML5是HTML语言第五次修改产生的新的HTML语言版本 改进主要包括: 增加新的HTML标签或者属性.新的CSS样式属性.新的JavaScript API等.同时删除了一些过 ...
随机推荐
- jenkins之从0到1利用Git和Ant插件打war包并自动部署到tomcat(第二话):安装插件,配置JDK、Git、Ant
jenkins之所以这么强大,离不开丰富的插件库. 要确保jenkins上安装好Git plugin.GitHub plugin.AntPlugin插件,一般在启动jenkins时默认安装的插件中就包 ...
- R语言画点状误差线
现在项目需要R语言做几个线性拟合,画一些点图,突然需要画误差线,网上找了下,可以用代码实现..效果如下 xx1<-c(xxxxxx,xxxx,xxxxx) yy1<-c(xxxxxx,xx ...
- 雷林鹏分享:XML Parser
XML Parser 所有现代浏览器都有内建的 XML 解析器. XML 解析器把 XML 文档转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象. 解析 XML 文档 下面的 ...
- 使用validateXxx()方法进行输入校验 --Struts2框架
1.本例是在使用validate()方法进行输入校验 --Struts2框架的基础上接着做的,上一篇使用validate()方法进行输入校验时会对当前Action中的所有方法有效,由于Struts2框 ...
- ionic this.navCtrl.push()和this.navCtrl.pop()
在ionic中,this.navCtrl.push()和this.navCtrl.pop()都是进行页面跳转,但是用法又有区别 例如有A B C三个页面,三个页面都是使用this.navCtrl. ...
- Spring Batch JSON 支持
Spring Batch 4.1 开始能够支持 JSON 格式了.这个发布介绍了一个新的数据读(item reader)能够读取一个 JSON 资源,这个资源按照下面的格式: [ { &q ...
- python记录_day31 进程同步和进程通信
一.进程同步 1.同步锁(又叫互斥锁) 加锁的代码以后,同一时间内只能被一个进程执行 from multiprocessing import Process, Lock def fun(loc): l ...
- MyBatis中mybatis-generator代码生成的一般过程
MyBatis框架的使用,可以参考我的文章: https://blog.csdn.net/JayInnn/article/details/81746571(基于Mybatis实现一个查库的接口) ht ...
- SSM框架中各层作用
SSM是sping+springMVC+mybatis集成的框架. MVC即model view controller. model层=entity层.存放我们的实体类,与数据库中的属性值基本保持一致 ...
- java使用线程设置定时任务
private static int a=0; public static void main( String[] args ) { timer(); } public static void tim ...
