zoukankan      html  css  js  c++  java
  • C++ STL 之容器篇

    STL 是标准模板库,由容器,算法,迭代器和容器适配器组成。

    容器有:vector(数组, 顺序存储), list(链表,可以翻转,可以在头尾添加,insert快,不可用 [ ] 和at),deque (vector和list 的居中版,一部分顺序,一部分用链表的形式存储,内存使用更加合理)

    map,set(关联式容器,默认有序的,使用二叉树,以红黑树为基础进行设计,其实是:简化的,平衡的,二叉查找树。 map 和 set 都是以数据关系 pair为基础的)

    unorder_map ( hash表的形式存储的关联式容器)

    其中,vector是动态数组,或者称为向量。其用法为:

    #include<vector>
    
    int main()
    {
            vector <int> vec2(10,6);    //vec2最初由10个值为6的元素
            vector <int> vec3(vec2.begin(),vec2.begin()+3); //vec3最初由3个值为6的元素。
    
            vector<int> ::iterator i;   // 声明迭代器
    
            vec1.push_back(2);  //从后面添加一个成员
    
            vec1.insert(vec1.begin()+1,5); //在vec1的第一个位置上插入成员5
        
            cout<<vec2[2]<<endl;
            //删除和移出
            vec1.pop_back();   //删除vec1的最后一个元素
            vec1.erase(vec1.begin()+1,vec1.end()-2);
    
            //获取vector的大小:  vec1.size();
            //清空vector:  vec1.clear();
    }

    2. queue 是双端队列,支持vector不支持的push_front()和 pop_front()

    3. list 是链表,双向链表,只能顺序访问,但是不能用【】进行随机访问

    4. set 是集合,multisets 是多集,区别是一个可重复,一个不可以重复,默认是排好顺序的。

    5. map 和multimaps 类似于python中的字典,由key和value 组成,在multimaps中一个key可以对应着多个value

    #include<map>
    
    int main()
    {
        //定义map: char是键的类型,int是值的类型
        map<char,int,less<char> > map1;            
        map<char,int,less<char> >::iterator mapIter;
        
    map1['c'] = 3;
        map1['d'] = 4;
    
    

      //打印
      for(mapIter=map1.begin();mapIter!=map1.end();mapIter++){
        cout<<" "<<(*mapIter).first<<" : "<<(*mapIter).second;
      }cout<<endl;//其中first对应定义中的char键,second对应定义中的int

     


    }
  • 相关阅读:
    洛谷 P3850 [TJOI2007]书架
    洛谷 P2073 送花
    洛谷 P2343 宝石管理系统
    浅谈 fhq-treap(无旋treap)
    洛谷 P4568 [JLOI2011]飞行路线
    洛谷 T59576 下一个回文树(zhoutbafo)
    求SG函数(两种方法)
    python3+Appium自动化08-数据配置yaml
    python3+Appium自动化07-滑动操作以及滑动方法封装
    python3+Appium自动化06-屏幕截图
  • 原文地址:https://www.cnblogs.com/cofludy/p/14566310.html
Copyright © 2011-2022 走看看