C++STL几种常用容器简要归纳


本文参考李煜东《算法竞赛进阶指南》,笔者作归纳总结。

本文将简要介绍STL中vector,queue,priority_queue,deque,set,multiset,map,bitset八种容器及其操作方法。

vector

使用此容器需在程序前加上头文件#include< vector >。
vector可理解为变长数组,基于倍增思想。当以已申请vector长度为m时,若实际长度n=m,则申请长度为2m的数组,将内容转移至新地址上,并释放旧空间;删除元素时,若n<=m/4,则释放一半空间。
vector容器能像数组一样随机访问第i个数a[i],但不支持随机插入.

#include<vector>       //头文件
vector<int> a;
vector<int> b[100];
struct rec{
   ···};
vector<rec> c;           //各种声明

vector<int>::iterator it;           //vector的迭代器,与指针类似

a.size()            //返回实际长度(元素个数),O(1)复杂度
a.empty()           //容器为空返回1,否则返回0,O(1)复杂度
a.clear()           //把vector清空
a.begin()           //返回指向第一个元素的迭代器,*a.begin()与a[0]作用相同
a.end()             //越界访问,指向vector尾部,指向第n个元素再往后的边界
a.front()           //返回第一个元素的值,等价于*a.begin和a[0]
a.back()            //返回最后一个元素的值,等价于*--a.end()和a[size()-1]
a.push_back(x)      //把元素x插入vector尾部
a.pop_back()        //删除vector中最后一个元素

迭代器使用与指针类似,可如下遍历整个容器

for ( vector<int>::iterator 
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值