C++ STL总结

1.stack

#include<stack>

声明:stack<ElemType> s;

入栈:s.push(elem);

出栈:s.pop();

取栈顶元素:s.top();

栈大小:s.size();

判断是否为空:s.empty();

2.queue

#include<queue>

声明:queue<ElemType> q;

入队:q.push(elem);

出队:s.pop();

取队首元素:s.front();

取队尾元素:s.back();

队列大小:s.size();

判断是否为空:q.empty();

3.priority_queue

和queue操作类似,但是插入进去的元素按照从大到小排序,并非是先进先出。

4.vector

#include<vector>

声明:vector<ElemType> v;

加入元素:v.push_back(elem);

删除容器最后位置处的元素:v.pop_back();   

返回指定index位置处的元素:v.at(index);   

返回指向容器最开始位置数据的指针:v.begin();                        

返回指向容器最后一个数据单元的指针+1:v.end();         

返回当前容器中实际存放元素的个数:v.size(); 

清除所有数据:v.clear();             

判断容器是否为空:v.empty();   

交换两个容器中的数据:v1.swap(v2);            

删除指针p指向位置的数据:v.erase(p);       

删除begin,end区间的数据:v.erase(begin,end)     

在指针p指向的位置插入数据elem:v.insert(p,elem);           

在位置p插入n个elem数据:v.insert(p,n,elem);      

在位置p插入在区间[begin,end)的数据:v.insert(p,begin,end) 

 5.sort

#include<algorithm>

函数格式:sort(a, a+n); //a和a+n分别是待排序数组首地址和位地址,默认升序排列

自定义cmp函数:

  1. int cmp(int a, int b){  
  2. return a>b?1:0;  
  3. }  
sort(a, a+n, cmp)变成自定义排序。

6.set

set实现了红黑树的数据结构,插入时自动排序,不会重复插入相同的值,而且插入后不能修改。构造set的目的是快速检索。

构造:set<int> s;

插入:s.insert(elem);//默认从小到大插入顺序

删除:s.erase(elem);//删除键值为elem的元素

统计某个数出现次数:s.count(elem);//可以用来判断某个数是否出现

清空:s.clear();

查找:s.find(elem);//查找元素值为elem的元素,返回该键值迭代器位置

遍历:用迭代器

  1. set<int>::iterator it;  
  2. for(it = s.begin(); it != s.end(); it ++){  
  3. cout<<*it<<endl;  
  4. }  

7.multiset

允许重复插入,用法和set相同。

8.map

map是一个键值和一个映照数据组成,用红黑树实现,插入不重复。

定义:map<string, int> m;

插入:m["one"] = 1;

           m["two"] = 2;

查找:用迭代器和find()函数

  1. map<string, int>::iterator it;  
  2. it = m.find("one");  


遍历:用迭代器

  1. map<string, int>::iterator it;  
  2. for(it = m.begin(); it != m.end(); it ++){  
  3. cout<<(*it).first<<":"<<(*it).second<<endl;  
  4. }  

9.multimap

允许重复插入,用法和map相同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值