第一篇:STL简介

写在前面的话:在网上找了好多都没有找到合适的STL资料,无奈只能看英文的,可是英文水平着实太搓,翻译下来自己都感觉不好意思,所以挂上来让大家指正,希望多多批评!


标准模版库介绍(STL)

  标准模版库,或者STL,是一种C++容器类库,算法和迭代器;它提供很多种计算机科学的基础算法和数据结构。
STL是一种一般的库,意味着它的组件有强烈的参数化,几乎每一个STL的组件都是一个模板。你应该在你使用STL
之前理解模板是如何在C++中工作的。

容器和算法

  和很多类库一样,STL包括容器类,这些类库目的是包括其他对象。STL包括vector,list,deque,set,multiset,

map, multimap, hash_set, hash_multiset, hash_map, and hash_multimap类。这些类中的每一种都是一个模板,
并且可以被实例化为包含对象的任意类型。例如,你可以用vector<int>来实现你在C语言数组中的很多使用方式,除了
vector消除了手工管理动态内存分配的任务。

1 vector<int> v(3);            // 声明有三个元素的容器
2 v[0] = 7;
3 v[1] = v[0] + 3;
4 v[2] = v[0] + v[1];          // v[0] == 7, v[1] == 10, v[2] == 17  

  STL还包括一个大的操作存储在容器中数据的算法集合。你可以颠倒vector中元素的顺序,例如,通过使用reverse算法

reverse(v.begin(), v.end()); // v[0] == 17, v[1] == 10, v[2] == 7 

  关于reverse的调用,有两点需要注意。首先,它是一个全局函数,而不是一个成员函数;其次,它接受两个参数而不是一个
;它操作一系列元素,而不是一个容器。在这个特殊的情况下,这些变化适用于所有容器。 

  造成这些事实的情况是相同的:reverse,像其他STL算法一样,是脱离STL容器类的。这也就意味着reverse不仅可以颠倒容器中元素的顺序,也可以适用于list中的元素,并且甚至适用于C中数组的元素。
  下列程序也是有效的

1     double A[6] = { 1.2, 1.3, 1.4, 1.5, 1.6, 1.7 };
2      reverse(A, A + 6);
3      for (int i = 0; i < 6; ++i)
4      cout << "A[" << i << "] = " << A[i];

  本例使用范围,就像颠倒vector的例子:颠倒第一个参数是指向范围的开始,第二个参数指向最后一个元素的下一个。该范围表示[A,A+6);非对称符号是一个提示,两个端点是不同的,即,首先是该范围的开头和第二个参数指向最后一个元素的下一个。

  迭代器,未完,待续。。。

时间: 2024-10-28 17:40:09

第一篇:STL简介的相关文章

【DirectX11】第一篇 DirectX11简介

本系列主要翻译和参考<Real-Time 3D Rendering with DirectX and HLSL>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是书中的代码和资源. 关于DirectX DirectX是一系列用来在微软提供的众多平台上开发游戏或图形应用的API接口,这些平台包括有Windows,Windows Phone,Xbox360以及最新的Xbox One.从上世纪末开始,DirectX已经发展并一直作为现代图形编程领域的领导者之一存在.DirectX3D作为D

JavaMail入门第一篇 邮件简介及API概述

现如今,电子邮件在我们的生活当中扮演着越来越重要的角色,我们每个人几乎都会与其打交道(至少时不时我们都会接收到莫名其妙的垃圾邮件),在工作中,使用邮件进行交流沟通,可以使我们的工作有迹可循,也显的较为正式,这是由我们人为手工操作的,在生活中,在某网站注册了一个账户之后,该网站就会自动发送一封欢迎邮件并让我们确认是否注册,以防止恶意注册,当然,这个就不可能像我们工作中手工方式来进行操作了,Java的13种核心技术中的JavaMail为我们提供了API来对邮件进行相关的操作. 一.邮件服务器 要在I

python学习之旅【第一篇】简介和入门

python简介: 一.什么是python pythonde 设计哲学是:“优雅”.“明确”.“简单” 二.python由来  1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python‘s Flying Circus)的爱好者. 三.Python能做什么 Web程序 Python经常被用于Web开发.比如,通过mod_ws

【ABAP系列】SAP ABAP7.40新语法简介第一篇

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP7.40新语法简介第一篇 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 SAP的系统不断的更新 7.40已经出来很久了,一直忙着没有更新7.40新语法内容 慢慢写点新语法的相关内容 首先说一下7.40的特点及简介 1.ABAP 7.40是AS ABAP 7.31(也称为ABAP 7.

第一篇 Replication:复制简介

本篇文章是SQL Server Replication系列的第一篇,详细内容请参考原文. 复制这个词来自拉丁语中的"replicare",意味着重复.Replication describes the process of reproducing or duplicating.Replication in SQL Server does exactly that;it reproduces or duplicates data.任何时候,你需要创建一个数据的副本,或重现该数据的变化,复

jstl标签 core fmt fn函数使用参考(为第一篇的补充,更为实用)

JSTL标签 参考手册 前言 ========================================================================= JSTL标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL全名为JavaServer Pages Standard Tag Library,目前最新的版本为1.1版.JSTL是由J

python第一篇

python第一篇 1.python简介 python是一门简单易学而且功能强大的编程语言,它有高效的内置数据结构,并且能够用简洁的语法进行面向对象编程.python简洁的语法和良好的编译解释性,使得它能够成为大多数领域的使用语言,如web开发,科学运算,人工智能,系统运维,金融分析,图形GUI等,很多领域都可以看到python的影子.既然python这么厉害,那为什么不学起来呢?come body!  life is short ,you need python! 2.基本数据类型 首先介绍的

The Internet Communications Engine (Ice) 跨平台异构通讯方案 第一弹-ICE简介

.net中的通讯方案很多,从.net Remoting,MSMQ,Webservice,WSE,WCF等等,他们都有一个特点,易用,但是都不能跨语种异构,如果你服务端要用java开发,客户端用C#开发,或者其它语言譬如C++, Python,PHP, Ruby, Objective-C,等等,那么.net提供的解决方案将不再有效.现在,隆重推出跨平台异构方案ICE.ICE官网:http://www.zeroc.com/ice.html 简介:The Internet Communications

基于C# Winform的简易聊天程序[第一篇-两端通信]

程序简介 本聊天程序支持局域网内部客户端与服务端之间的互相通信. 原理 启动服务端后,服务端通过持续监听客户端发来的请求,一旦监听到客户端传来的信息后,两端便可以互发信息了.服务端需要绑定一个IP,用于客户端在网络中寻找并建立连接.信息发送原理:将手动输入字符串信息转换成机器可以识别的字节数组,然后调用套接字的Send()方法将字节数组发送出去.信息接收原理:调用套接字的Receive()方法,获取对端传来的字节数组,然后将其转换成人可以读懂的字符串信息. 界面设计 - 服务端 IP文本框 na

Golang学习-第一篇 Golang的简单介绍及Windows环境下安装、部署

序言 这是本人博客园第一篇文章,写的不到位之处,希望各位看客们谅解. 本人一直从事.NET的开发工作,最近在学习Golang,所以想着之前学习的过程中都没怎么好好的将学习过程记录下来.深感惋惜! 现在将Golang的学习点滴记录分享,废话到此,下面进入正文. 注:此文及以后所有内容中的开发平台为:Windows 开发工具为:JetBrains Gogland x64版本 官方下载地址为:https://www.jetbrains.com/go/download/#section=windows