《STL源码剖析》chapter1 STL概论与版本简介

chapter1 STL 概论与版本简介

STL六大组件

STL提供六大组件,彼此可以组合套用:

  1. 容器(container):如vectorlistdeque用来存放数据。从实现的角度来看,STL容器是一种class template
  2. 算法(algorithm):如sortsearchcopy等。从实现的角度来看,STL算法是一种function template
  3. 迭代器(iterator):是所谓的"泛型指针",共有五种类型。所有STL容器都附带有自己专属的迭代器。
  4. 仿函数(functor):行为类似函数,可作为算法的某种策略。从实现的角度来看,仿函数是一种重载了operator()classclass template
  5. 配接器(adapter):一种用来修饰容器或仿函数或迭代器接口的东西
  6. 配置器(allocator):负责空间配置与管理。从实现的角度来看,配置器是一个实现了动态空间配置、空间管理、空间释放的class template
//例子一:使用六大组件的简单例子
#include<vector>
#include<algorithm>
#include<functional>
#include<iostream>

using namespace std;

int main(){
    int ia[6]={27,210,12,47,109,83};
    vector<int,allocator<int>> vi(ia,ia+6);
//  ^^^^^      ^^^^^^^^^^^^^^
//  container  allocator
    cout<<count_if(vi.begin(),vi.end(),bind(less<int>(),_1,40));
//        ^^^^^^^             ^^^^^^^  ^^^^  ^^^^^^^^^^
//        algorithm           iterator adapter   functor
    return 0;
}
STL版本
  • HP版本是所有STL实现版本的始祖
  • Visual C++使用的由P.J. Plauge开发的PJ STL版本
  • C++ Builder使用的由Rouge Wave公司开发的RW STL版本
  • GCC使用的是有Silicon Graphics Computer Systems,Inc公司开发的SGI版本,其承继HP版本(《STL源码剖析》一书中以SGI STL作为讲解例子)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值