STL简介

什么是STL?

    STL就是Sandard Template Library,标准模板库,所有C++编译器和所有操作系统平台都支持的一种库,不需要了解底层是怎么样实现的,只要掌握了使用就可以。

    STL的优点在于通用性,与C++的OOP特性无关。


模板是什么?

    模板是C++中实现代码重用机制的一种工具,可以实现类型参数化,把类型定义为参数。函数模板和类模板允许用户构造模板函数和模板类。STL是标准模板库,学完了就容易理解了。例如定义函数模板vector<class T>,T可以是int,也可以是string是吧,这时候T就是待实例化的类型,ok,go on!


命名空间?

    编译器识别不识别命名空间没关系,但是为了避免STL的算法和其他同名算法发生冲突,统一将STL封装到std中,所以使用STL的时候要引用命名空间

    using namespace std;

    STL头文件不需要.h来扩展。


 STL的组成:

    STL有很多组件,我们主要了解其中三个基本组件就可以了。

    ① 迭代器Iterator----提供访问对象的方法。

    ② 容器container----像是list、vector的这些可以容纳数据的模板类。

    ③ 算法Algorithm----处理数据的操作等。

    

     我们来看看专家怎么说:

  • 容器(container):容器是数据在内存中组织的方法,例如,数组、堆栈、队列、链表或二叉树(不过这些都不是STL标准容器)。STL中的容器是一种存储T(Template)类型值的有限集合的数据结构,容器的内部实现一般是类。这些值可以是对象本身,如果数据类型T代表的是Class的话。
  • 算法(algorithm):算法是应用在容器上以各种方法处理其内容的行为或功能。例如,有对容器内容排序、复制、检索和合并的算法。在STL中,算法是由模板函数表现的。这些函数不是容器类的成员函数。相反,它们是独立的函数。令人吃惊的特点之一就是其算法如此通用。不仅可以将其用于STL容器,而且可以用于普通的C++数组或任何其他应用程序指定的容器。
  • 迭代器(iterator):一旦选定一种容器类型和数据行为(算法),那么剩下唯一要他做的就是用迭代器使其相互作用。可以把达代器看作一个指向容器中元素的普通指针。可以如递增一个指针那样递增迭代器,使其依次指向容器中每一个后继的元素。迭代器是STL的一个关键部分,因为它将算法和容器连在一起。
Iterator迭代器
    迭代器可以说类似于指针,但是又不是指针,因为不一定具有地址,可以当成指针一样操作。很多书或者博客都将迭代器专门拎出来将,我就不进行详细介绍了,稍微普及一下知识就行了。
    迭代器有这么几类:输入Iterator 、输出 Iterator、前向Iterator、 双向 Iterator、流Iterator等。
copy( s.begin() , s.end() , ostream_iterator<int>(cout," ") );
意思是:将由s.begin()和s.end()(不包含s.end())所指定的序列复制到标准输出流cout中,用空格作为间隔。
 
下面的博客详细介绍一些容器的使用方法,仅用于做一些简单的算法题,想深入了解C++的实现机制可以找参考书来看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值