STL学习总结

经过这段时间的学习我对STL也有了大体的了解,接下来就要经过大量的训练来进一步扎实STL的运用。下面我就对最近学习的知识进行总结。
一、 栈(stack)

定义:只有一个出口,先进后出。

头文件:#include

如:stacks;

使用:

empty()—返回bool类型,用来判断是否为空(s.empty())

size()—返回元素个数(s.size())

top()—返回栈顶元素(s.top())

pop()—移除栈顶元素(s.pop())

push()—加入一个元素a(s.push(a))

二、队列(queue)

定义:有两个出口,先进先出,排队模型。

头文件:#include

如:queues;

使用:

同上:empty()、size()、push()、pop()删除排头第一个元素

front()—返回queue内的下一个元素

back()—返回最后一个元素

三、vector应用

头文件:#include

如:vectors;

使用:

同上:empty()、size()

push_back(a)—将a元素插入最末尾

pop_back()—将最末尾元素删除

s[i]类似数组

四、sort应用

定义:默认从小到大排序

头文件:#include

sort(begin,end);

sort(begin,end,cmp);

如:int num[]={1,6,3,9,5}

(一)
sort(num,num+5);——{1,3,5,6,9}

(二)
从大到小

bool cmp(int
a,int b){
return a>b;
}

sort(num,num+5,cmp);——{9,6,5,3,1}

或者sort(num,num+5,greater())

五、upper_bound和lower_bound

upper_bound(begin,end,value)返回>value的元素的第一的位置

Iower_bound(begin,end,value)返回>=value的第一个位置

六、set和multiset

头文件:#include
如:sets;默认从小到大排序
自定义排序:
struct
new_type{
int x,y;
bool operator
< (const new_type &a)const{
if(x!=a.x)
return x<a.x;
return
y<a.y;
}
}
set<new_type>s;
应用:
s.insert(a)—插入新元素a,返回新元素位置。

s.erase(a)—移除与a元素相同的所有元素,并返回被移除的个数。

s.erase(pos)—移除迭代器pos所指位置的元素,无返回值。

s.clear()—移除所有的元素

s.find(a)在容器中查找a元素并返回其地址

同上:s.size()、s.empty()
s.count(a)–返回a元素的个数
s.upper_bound(value)—返回元素值>value的元素的第一的位置
s.Iower_bound(value)–返回元素值>=value的第一个位置
s.begin()—返回一个双向迭代器,指向第一个元素
s.end()—返回一个双向迭代器,指向最后一个元素的下一个元素
迭代器:
muitiset::iterator pos;
for(pos=s.begin();pos!=s.end();pos++)
七、map与multimap
头文件:#includes;
如:map<string,int>s;默认按string由小到大排序
应用:
同上:s.size()、s.empty()、s.count()、s.begin()、s.end()、s.clear()、s.erase(a)、s.erase(pos)、
s.upper_bound(value)—返回键值等于value元素的最后一个可安插的位置
s.Iower_bound(value)–
返回键值等于value元素的第一个可安插的位置
s[key]=value;
查找的时候如果没有键值为key的元素,则安插一个键值为key的新元素,实值为默认(0)
插入元素方法:
s.insert(a)插入一个元素a
(1)运用value_type插入
map<string,float>s;
s.insert(map<string,float>::value_type(“lizhuang”,”22.3”));
(2)运用pair<>
s.insert(pair<string,float>
(“lizhuang”,”22.3”));
(3)运用make_pair()
s.insert(make_pair(“lizhuang”,”22.3”));
八、优先队列(priority_queue)
头文件:#include
如:priority_queues;
应用:
s.push(a)将元素a插入优先队列

s.top()返回优先队列的下一个元素

s.pop()移除下一个元素

相同:s.size、s.empty()

自定义排序
#define pow2(a) (a*a)
#define dist2(x,y) (pow2(x)+pow2(y))
struct cood{
Int x,y;
const bool operator < (const cood &b)const{
return (dist2(x,y) < dist2(x,y))
}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值