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

 


}
原文地址:https://www.cnblogs.com/cofludy/p/14566310.html