STL常用容器以及算法总览

关于STL的常用容器以及算法的总结

主要对https://blog.csdn.net/u013846293/article/details/79410293

以及https://blog.csdn.net/xyqqwer/article/details/81263060

作者所述,做了一波搬运以及全面总结。方便于本人查阅的同时也希望能帮助到同仁。后续会增加一些需要的。

序列式容器

vector<int> vec,vec2;

注意:vector没有push_front()和pop_front()操作,因为代价有点大。

vector容量只会扩张,不会减少

可以用[ ]作为随机存取的典型。

vec.begin()  //指向迭代器中第一个元素。   

vec.end()  //指向迭代器中末端元素的下一个,指向一个不存在元素。          

vec.push_back(elem)     //在尾部加入一个数据。  

vec.pop_back()          //删除最后一个数据。  

vec.capacity()      //vector当前总共空间的大小,提一下vector的增加规则,开始两次push_back是1,2之后增加的话按照1.5倍当前的大小扩充容量

vec.reserve()      //可以通过这个预留相当的空间,设置Vector最小的元素容纳数量 

vec.size()        //返回容器中数据个数。

vec.resize()    //强行改变Vector元素数量的大小,截断与扩充。当resize元素大于capacity()时,将会产生扩充,扩充大小等于resize的。

vec.empty() //判断容器是否为空。  

vec.front()     //传回第一个数据。  

vec.back()  //传回最后一个数据,不检查这个数据是否存在。  

vec.at(index)   //相当于[index],传回索引idx所指的数据,如果idx越界,抛出out_of_range。  

vec.clear() //移除容器中所有数据。  

vec.erase(iterator) //删除pos位置的数据,传回下一个数据的位置。  

vec.erase(begin,end)    //删除[beg,end)区间的数据,传回下一个数据的位置。注意:begin和end为iterator  

vec.insert(position,elem)   //在pos位置插入一个elem拷贝,传回新数据位置。  

vec.insert(position,n,elem) //在pos位置插入n个elem数据,无返回值。  

vec.insert(position,begin,end)  //在pos位置插入在[beg,end)区间的数据,无返回值。 

vec.assign(int n1,int n2)   // 对Vector中的元素赋值,将n1个n2赋值给vec ,或者也可以是一个迭代器区间,这个操作会清除掉vec的数据。

get_allocator() 返回vector的内存分配器 

vec.max_size() 返回Vector所能容纳元素的最大数量(上限) 

vec.rbegin() 返回Vector尾部的逆迭代器 

vec.rend() 返回Vector起始的逆迭代器 

swap() //交换两个Vector,用法vec.swap(vec2),vec和vec2交换,也就是vec中的所有元素到vec2中,vec2中的所有元素到vec中

如果想翻转整个vector的话,有两种办法,一种是C++提供的函数reverse(vec.begin(),vec.end());另一种就是头尾互换,头尾互换也有两种办法,一种是用C++提供的swap函数,swap(vec[i],vec[j]);另一种就是设置一个中间变量,然后交换,类似于temp=vec[i];vec[i]=vec[j];vec[j]=temp;

然后介绍一下上面用到的这两个非常好用的函数,swap和reverse,两个函数都在<algorithm>头文件中

swap:用于交换两个变量的值,以整型为例,int a=2,b=3;swap(a,b);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值