美文网首页
STL综述(开篇)

STL综述(开篇)

作者: lickang | 来源:发表于2018-12-22 11:09 被阅读0次

    STL (Standard Template Library,标准模板类库)。

    特点:

    1.提供了常用的数据结构模板类和丰富的操作函数。

    2.所有组件都是用模板方式定义的,全面支持泛型,强调的石让数据的结构和算法独立于其类型。


    STL三大件:容器(container)、算法(algorithm)、迭代器(iterator)


    一、容器

    顺序容器:vector(向量)、list(链表)、deque(双端队列)

    关联容器:set(集合)/multiset(多重集合)、map(映射)/multimap(多重映射)

    适配器容器:stack(栈)、queue(队列)、priority_queue(优先级队列)

    哈希容器:hash_map(hash_multimap、hash_set、hash_multiset)


    1.vector(向量)

    vector相当于动态数组,可以从尾部快速的插入和删除元素,快速随机访问元素,在序列中间插入和删除时,需要移动后面的元素。

    主要函数:

    max_size():最大元素个数

    size():实际个数

    resize(n):调整容器大小

    empty():判断是否为空

    at():返回指定位置元素

    front():获取第一个元素

    back():获取最后一个元素

    assign():给元素赋值

    insert():插入

    push_back():尾部插入一个元素

    pop_back():删除尾部元素

    clear():删除所有元素

    begin():正向迭代,返回第一个元素的位置

    end():正向迭代,返回最后一个元素的位置

    rbegin():反向迭代,返回最后一个元素的位置

    rend():反向迭代,返回第一个元素的位置

    小例子:

    #include<stdio.h>

    #include<vector>

    #include<algorithm>

    using namespace std;

    bool cmp(int &x,int &y) {

    return x>y;

    }

    int main() {

    int a[10]={2,4,1,6,8,12,67,45,89,456};

    vector <int> vec(a,a+10);

    printf("size:%d\n",vec.size());

    printf("正向输出vec:");

    vector<int>::iterator it,it1;

    for(it=vec.begin();it!=vec.end();it++) {

    printf("%d\t",*it);

    }

    printf("\n");

    int x=6;

    it1 = find(vec.begin(),vec.end(),x);

    if(it1!=vec.end()) {

    printf("find it = %d\n",*it1);

    }else {

    printf("Not find it.\n");

    }

    printf("递减排序vec:\n");

    sort(vec.begin(),vec.end(),cmp);

    vector<int>::reverse_iterator rit;

    printf("反向输出vec:");

    for(rit = vec.rbegin();rit!=vec.rend();++rit) {

    printf("%d\t",*rit);

    }

    printf("\n");

    return 0;

    }

    相关文章

      网友评论

          本文标题:STL综述(开篇)

          本文链接:https://www.haomeiwen.com/subject/mrhikqtx.html