STL

STL包含:容器类(container)、迭代子(iterator)、 算法(algorithm)

容器类(Container:-容器类是管理序列的类,是容纳一组对象或对象集的类。通过由容器类提供的成员函数,可以实现诸如向序列中插入元素,删除元素,查找元素等操作,这些成员函数通过返回迭代子来指定元素在序列中的位置。

容器分为三大类:顺序容器、关联容器、容器适配器

 标准库中的顺序容器包括:

        (1)、vector:可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢。

        (2)、deque:双端队列。支持快速随机访问。在头尾位置插入/删除速度很快。

        (3)、list:双向链表。只支持双向顺序访问。在list中任何位置进行插入/删除操作速度都很快。

        (4)、forward_list:单向链表。只支持单向顺序访问。在链表任何位置进行插入/删除操作速度都很快。

        (5)、array:固定大小数组。支持快速随机访问。不能添加或删除元素。

        (6)、string:与vector相似的容器,但专门用于保存字符。随机访问快。在尾部插入/删除速度快。

(1)矢量类(vector):矢量(vector)类提供具有连续内存地址的数据结构,可通过下标运算符[ ]直接有效地访问矢量的任何元素。

    1)#include<vector>--->vector<type> vi; //type为类型

    2)构造函数:vector(size_t n)构造n个元素、vector(size_t n,T& V)为每个元素用V初始化...

    3)常用函数:empty()判空、begin()返回首地址、end()返回末元素下一个、clear()清空

    front()第一个数据、back()最后一个数据、size()数据个数、push_back(elem)插入尾部

    pop_back()删除尾部数据。swap()交换两容器数据

(2)列表类:列表类是由双向链表组成的。它有两个指针域,可以向前也可以向后进行访问,但不能随机访问,即支持的迭代子类型为双向迭代子。列表类不能使用下标运算符[]。它定义在头文件<list>中。

    1)#include<list>---->list<type> ls;

    2)常用函数:大多与vector类似,

    insert(iter, param)在iter位置插入param,

    insert(iter, n, param)在iter位置插入n个param

    insert(iter, ls2.gegin(), ls2.end())在iter位置插入ls2从头到尾的数据

    但只能通过迭代器访问,不能用[]

(3)映射map

    1)#include<map> --->map<type1, type2> mp;-->mp.insert(pair<type1, type2>(1, 20 ));//

    2) map<string , int >mapstring;         map<int ,string >mapint;

    map<sring, char>mapstring;         map< char ,string>mapchar;

    map<char ,int>mapchar;            map<int ,char >mapint;

    3)常用函数:find()查找一个元素

(4)迭代器iterator:每个容器对象都有自身相应的迭代器

    1)iterator除了进行++,--操作,可以将iter+n,iter-n赋给一个新的iteraor对象。还可以使用一个iterator减去另外一个iterator.

    如:vector<type> vi;-->vector<type>::iterator iter; for(iter = vi.gegin(); iter < vi.end(); iter++){cout<<*iter<<endl;}//可用list、    map等其他容器  

2、泛型算法(Generic Algorithm):-在模板中算法不依赖于具体的数据类型,而泛型算法更进一步不依赖于具体的容器。

//泛型算法中采用函数对象(function object)引入不同情况下同一算法的差异。它没有使用继承和多态,避免了虚函数的开销,使STL效率更高

    1)

3、迭代子(Iterator):-迭代子是指针概念的泛型化,它指向容器中的元素,它能象指针一样增减,轮流指示容器中每个元素。所以说迭代子是面向对象版本的指针。迭代子可以包括指针,但迭代子又不仅仅是一个指针。

//迭代子把算法与容器连接起来。算法只是间接通过迭代子操作容器元素,算法本身与容器无关。算法通常返回迭代子。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值