博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL
阅读量:4320 次
发布时间:2019-06-06

本文共 3196 字,大约阅读时间需要 10 分钟。

简单介绍一些关于c++STL

 

NO.1 map

1   头文件,定义 

    #include   <map> 

  定义 map<A,B> fzy;

  定义了A,B的一个map fzy;及标号是A类型,内容是B类型

2   查找

   map<A,B>::iterator zhi;

   定义了一个指针zhi

   for   (zhi=fzy.begin();zhi!=fzy.end();++zhi)   {} 

3  基本函数

  begin()    返回指向map头部的迭代器

    clear()    删除所有元素
    count()    返回指定元素出现的次数
    empty()    如果map为空则返回true

NO.2 vector

1 头文件,定义

  #include<vector>

  vector<A> fzy; 定义了一个为A类型的名字为fzy的vector

  vector是动态数组。

2 使用迭代器

  vector<A>::iterator zhi;

  for   (zhi=fzy.begin();zhi!=fzy.end();++zhi)   {} 

3 插入删除

  fzy.insert(fzy.begin()+i,a);在第i+1个元素前面插入a;

      fzy.erase(fzy.begin()+2);删除第3个元素

4 基本函数

  1.push_back   在数组的最后添加一个数据

  2.pop_back    去掉数组的最后一个数据 
  3.begin           得到数组头的指针
  4.end             得到数组的最后一个单元+1的指针
  5.erase         删除指针指向的数据项
  6.clear          清空当前的vector
  7.empty        判断vector是否为空

5 排序

  使用sort排序:需要头文件#include<algorithm>,

  sort(fzy.begin(),fzy.end());(默认是按升序排列,即从小到大).

NO.3 set 

 1 头文件,定义

  #include<set>

  set<A> fzy;定义了一个A类型的set fzy

 2 使用迭代器

  set<int>::iterator zhi;

      for(zhi=fzy.begin();zhi!=fzy.rend();zhi++)

 3 元素插入,删除

  元素插入:insert()

  元素删除:与插入一样,可以高效的删除,并自动调整使红黑树平衡。

            set<int> s;
            s.erase(2);        //删除键值为2的元素

4 元素检索

  find(),若找到,返回该键值迭代器的位置,否则,返回最后一个元素后面一个位置。

      set<int> s;

           set<int>::iterator it;

           it=s.find(5);    //查找键值为5的元素
           if(it!=s.end())    //找到
           else            //未找到

5 基本函数

  1. begin()--返回指向第一个元素的迭代器 

    2. end()--返回指向最后一个元素的迭代器

  3. clear()--清除所有元素

  4. count()--返回某个值元素的个数

  5. empty()--如果集合为空,返回true

  6. erase()--删除集合中的元素

  7. insert()--在集合中插入元素

  8. lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器

 NO.4 priority queue

1 头文件,定义

  #include<vector>

  priority_queue 对于基本类型的使用方法相对简单。他的模板声明带有三个参数,priority_queue<Type, Container, Functional>

  Type 为数据类型, Container 为保存数据的容器,Functional 为元素比较方式。

2 插入,删除

  pop 弹出优先队列中第一个元素

  top 返回优先队列中第一个元素

  push 在尾部插入一个元素

3 简单堆

  priority_queue<int> 大根堆

  priority_queue<int,vector<int>,greater<int> > 小根堆

4 operator定义

    代码一

1 #include 
2 #include
3 using namespace std; 4 struct Node{ 5 int x, y; 6 }node; 7 struct cmp{ 8 bool operator()(Node a,Node b){ 9 if(a.x==b.x) return a.y>b.y; 10 return a.x>b.x;} 11 }; 12 13 int main(){ 14 priority_queue
,cmp>q; 15 for(int i=0;i<10;i++){ 16 node.x=i; 17 node.y=10-i/2; 18 q.push(node); 19 } 20 while(!q.empty()){ 21 cout<
<<' '<
<

 

  代码二

1 #include 
2 #include
3 using namespace std; 4 struct Node{ 5 int x, y; 6 }node; 7 bool operator<( Node a, Node b){ 8 if(a.x==b.x) return a.y>b.y; 9 return a.x>b.x; 10 } 11 int main(){ 12 priority_queue
q; 13 for(int i=0;i<10;i++){ 14 node.x=i; 15 node.y=10-i/2; 16 q.push(node); 17 } 18 while(!q.empty()){ 19 cout<
<<' '<
<

5 基本函数

  empty()

  push()

  top()

  pop()

 NO.5 pair

1.头文件,定义

  无需头文件,因为在声明std中已经包涵。定义,pair<int,int> a;这样既可,也可以直接初始化pair<string, string> a("James", "Joy");这样子的。

2.操作

  对于pair类,由于它只有两个元素,分别名为first和second,因此直接使用普通的点操作符即可访问其成员  

  生成pair    make_pair(A,B);中间分别为两个类型。

转载于:https://www.cnblogs.com/fengzhiyuan/p/6985372.html

你可能感兴趣的文章
jenkins忘记密码如何处理?
查看>>
布尔操作符-逻辑或(||)
查看>>
vim的列编辑操作
查看>>
Linux驱动学习 —— 在/sys下面创建目录示例
查看>>
Linux下安装Android的adb驱动-解决不能识别的问题
查看>>
Why is the size of an empty class not zero in C++?
查看>>
海亮SC
查看>>
[Hibernate] - Generic Dao
查看>>
【Linux】一步一步学Linux——Linux系统常用快捷键(12) 待更新...
查看>>
Vue中computed和watch使用场景和方法
查看>>
laravel路由与控制器(资源路由restful)
查看>>
Html5移动端页面自适应布局详解(阿里rem布局)
查看>>
memoize-one在React中的应用
查看>>
SpringBoot整合JDBC数据库操作第二弹-配置基本数据库连接源
查看>>
nginx日志切割脚本
查看>>
ipvsadm添加虚拟服务器报错问题
查看>>
LVS-DR集群搭建脚本
查看>>
Docker拉取的镜像源更改为国内的镜像源
查看>>
LVS健康检查脚本
查看>>
PowerCLI 对vm批量关机
查看>>