STL CSB 11.10

QUEUE

FIFO

#include <queue>
queue<int>qu;// queue<元素类型>队列名
qu.size();//队列大小
qu.empty();//队列是否为空,返回值为bool型
qu.push();//向队列中存元素
/*
qu.push(4);
qu.push(133);
qu.push(23);
此时 qu.size()为3
*/
qu.front();//队头元素的值
qu.back();//队尾元素的值
qu.pop();//队头元素出队
/***********WRITTEN BY LLL***************/
/*
while(!qu.empty())
{
    cout<<q.front()<<" ";
    q.pop();
}
*/

STACK

FILO(first in last out)

#include<stack>
stack<int>st;//栈的声明
st.size();
st.empty();
st.top();
/**********************WRITTEN BY LLL********************/
/*后续手写遍历*/

VECTOR//向量

可变大小的数组
可采用下标对vector的元素进行访问;

#include<vector>
vector<int>vec;
vec.size();
vec.empty();
//vec[0],vec[1];
vec.push_back();//末尾添加元素
vec.pop_back();//末尾删除元素
vector <int>::iterator iter;
vec.begin();
vec.end();
//遍历
for(iter=vec.begin();iter!=vec.end();iter++){
    cout<< *iter <<endl;
}
vec.resize(大小);//重新设置大小
vec.erase(参数);//参数是一个迭代器,直接消失。
vec.insert(位置,数据);//向那个位置的前面插入元素data
//交换
vector<int>ve;
vec.swap(ve);//把ve和vec里元素交换
//元素翻转,reverse不是vector特有的成员函数
reverse(vec.begin(),vec.end());//左闭右开
string str="abcbagbhjknskhinkc";
reverse(str.begin(),str.end());//string用begin end
char a[100]="asd";
reverse(str,str+3);//数组用下标+-做
vec.clear();//清空整个向量  ?赋值0还是释放了空间?

MAP//映射

提供1V1的映射

map<int,string>mp;
mp.insert(make_pair<int,string>(1,"student_one"));
mp["hhh"]=5;
int t=mp.size();
mp["heheda"]=17;
map<string,int>::iterator iter;
for(iter=mp.begin();iter!=mp.end();iter++){
    cout<<iter->first<<" "<<iter->second<<endl;//按照字典序排序
}
//用下标覆盖??
cout<<mp.count("heheda")<<endl;//结果为1,那heheda出现过了1次。即heheda出现的次数
iter=mp.find("hhh");
mp.erase(iter);
mp.clear();

PAIR

pair<int,int>k;
k.first=1;
k.second=2;

SET//集合

已经从小到大排列好了的集合(互斥性)

set<int>st;//不能用下标,只能用迭代器访问
begin();
end();
clear();
empty();
size();
/*需要迭代器承载or做参数
find();
erase();
*/
//用insert来插入
st.insert(data);
set<int>::iterator iter;
//遍历
for(iter=st.begin();iter!=st.end();iter++){
    cout<<*iter<<endl;
}
cout<<st.size();
iter=st.find(10);
st.erase(iter);
count();//count返回出现次数,set只能是否出现过,multiset是次数
/*课后了解 结构体的时候实现map排的方式*/

双端队列&优先队列

dequeue<int> dq;
dp.front_push();
dp.back_push();
priority_queue<int>q; //实时操作,nlgn
q.top();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值