STL学习

C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构。是所有平台都支持的一种库。

STL中六大组件:
1容器(Container),是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器;
2
迭代器(Iterator),提供了访问容器中对象的方法。例如,可以使用一对迭代器指定list或vector中的一定范围的对象。迭代器就如同一个指针。
3算法(Algorithm),是用来操作容器中的数据的模板函数。例如,STL用sort()来对一个vector中的数据进行排序,用find()来搜索一个list中的对象。
4仿函数(Function object
5迭代适配器(Adaptor

6空间配制器(allocator

容器

类别分为两类:

序列式容器:排列次序取决于插入时机和位置

关联式容器:排列顺序取决于特定规则。

容器元素的条件

能够通过拷贝构造函数进行复制

可以通过赋值运算符完成赋值操作

可以通过析构函数完成销毁动作

序列式容器元素的默认构造函数必须可用

某些动作必须定义operator=,例如搜寻操作

关联式容器必须定义出排序准则,默认情况是重载operator<

迭代器(iterator):

1.可遍历STL容器内全部或部分元素的对象

2.指出容器中的一个特定位置

vector迭代器相关函数:

1.     begin()返回一个迭代器,指向第一个元素;

2.    end()返回一个迭代器,指向最后一个元素末尾;

3.    rbegin()返回一个逆向迭代器,指向逆向遍历的第一个元素;

4.    rend()返回一个逆向迭代器,指向逆向遍历的最后一个元素;

vector容器的应用:

构造拷贝和析构

vector<int> vec1;    //产生空的vector

vector<int> vec2(vec1);  //使用vec1初始化vec2  

vector<T>c(n);利用类型T的默认构造函数和拷贝构造函数生成一个大小为n的vector

 vector<int> c(n,e);  产生一个大小为n的vector,每个元素都是e;

vector<T>c(began,end)产生一个vector,以[began,end]区间为元素初值;

~vector<T>();销毁所有元素并释放内存;

//2.常用操作方法  

    vec1.push_back(100);            //添加元素  

    int size = vec1.size();         //元素个数  

    bool isEmpty = vec1.empty();    //判断是否为空  

    cout<<vec1[0]<<endl;        //取得第一个元素  

    vec1.insert(vec1.end(),5,3);    //从vec1.back位置插入个值为的元素  

    vec1.pop_back();              //删除末尾元素  

    vec1.erase(vec1.begin(),vec1.end());//删除之间的元素,其他元素前移  

    cout<<(vec1==vec2)?true:false;  //判断是否相等==、!=、>=、<=...  

    vector<int>::iterator iter = vec1.begin();    //获取迭代器首地址  

    vec1.clear();                 //清空元素  

map和multimap

使用平衡二叉树管理元素

元素包含两部分(key,value),key和value可以是任意类型的元素;

必须包含头文件#include<map>;

根据key自动对元素排列;

不能直接改变元素的key;可以通过operator[]直接存取元素值;

map不允许key相同的元素,multimap可以;

简单操作

map c ;产生空的map;

mapc1(c2)   产生同类型的c1并复制c2的所有元素;

map c(op)  以op为准则产生一个新的map;

~map()  销毁所有元素并释放内存;

赋值

c1=c2  将c2的全部元素复制给c1

c1.swap(c2)  将c1和c2的元素互换

swap(c1,c2) 同上,全局函数;


学习心得;熟悉了STL之后,可以更方便的编写程序,许多复杂之处可以被大大的化简,利用STL可以更快速的访问地址。并且STL中包含了许多可以节省空间的操作方法,要让STL在学习程序编程中成为自己的助手

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值