1,STL提供三种类型的组件:容器、迭代器、算法。

 

容器:

顺序容器(vector、list、deque、string等)是一系列元素的有序集合;

关联容器(set、multiset、map、multimap)包含查找元素的键值。

 

迭代器:作用是遍历容器。

    for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    //迭代器是依附于容器的

 

 

算法:排序算法、不可变序算法、变序算法、数值算法。

    #include <numeric>
    #include <algorithm>
    vector<int> v;

    sort(v.begin(), v.end());        //排序算法
    reverse(v.begin(), v.end());        //变序算法,反转
    accumulate(v.begin(), v.end());        //数值算法,计算和
    //可以看到算法不是容器的方法,而是独立于容器的

 

2,set集合红黑树的平衡二叉检索树,但是元素没有重复,插入重复的插不成功;

multiset允许插入重复的数字。

 

3,map映照容器,键值与数据构成,红黑树实现的,插入元素的键值不允许重复,比较函数只对元素的键值比较;

multimap允许插入重复键值的元素。

 

4,deque双端队列容器,与vector类似采用线性表顺序存储结构,当考虑到容器元素的内存分配策略和操作性能是,deque相对于vector更有优势。从头部和中间插入元素只将原来的元素覆盖,不会增加新元素。

 

5,list结构实现了双向链表的数据结构。对迭代器只能++、--,不能+n、-n。

 

6,queue队列是先进先出的线性存储表,插入只能在队尾,删除只能在队首。

 

7,priority_queue优先队列,只能在队首删除、队尾插入。

posted on 2015-03-15 09:40  简单的信仰  阅读(467)  评论(0编辑  收藏  举报