常用的C++ STL

一、priority_queue(实现堆的用法)

#include <queue>

基本操作

  1. empty() 如果队列为空,则返回真
  2. pop() 删除队头元素
  3. push() 加入一个元素
  4. size() 返回优先队列中拥有的元素个数
  5. top() 返回优先队列中有最高优先级的元素

声明方法:

1.普通方法:

priority_queue<int>q; //默认从大到小顺序出队

priority_queue<int,vector<int>,greater<int> >q;; //默认从小到大出队

2.结构体声明方式:

struct node {
    int x,y;
    friend bool operator < (node a,node b){
        return a.x>b.x;  //默认按x从小到大的顺序输出
    }
}
priority_queue<node>q;

二、set(实现二叉搜索树的用法)

#include <set>

基本操作

  1. begin() 返回指向第一个元素的迭代器
  2. clear() 清除所有元素
  3. count() 返回某个值元素的个数
  4. empty() 如果集合为空,返回true(真)
  5. end() 返回指向最后一个元素之后的迭代器,不是最后一个元素
  6. erase() 删除集合中的元素
  7. find() 返回一个指向被查找到元素的迭代器
  8. insert() 在集合中插入元素
  9. max_size() 返回集合能容纳的元素的最大限值
  10. size() 集合中元素的数目
  11. swap() 交换两个集合变量

set的要使用迭代器去访问。

set<int>::iterator iter; //定义一个迭代器变量iter,用法类似指针,*iter表示其指向的值

对于集合来说,一般有并集、交集、差集、补集这几种操作,所以在set的操作中我们也有类似的集合操作。

在#include <algorithm>头文件里。

设有set_A,set_B和用来存储操作结果的set_C。

set_union(A.begin(),A.end(),B.begin(),B.end(),inserter(C,C.begin()));//求并集
set_intersection(A.begin(),A.end(),B.begin(),B.end(),inserter(C,C.begin()));//求交集
std::set_difference(A.begin(),A.end(),B.begin(),B.end(),inserter(C,C.begin()))//求A-(A和B的交集)
std::set_symmetric_difference(A.begin(),A.end(),B.begin(),B.end(),inserter(C,C.begin()))//求A和B的并集减去A和B的交集
for(iter=C.begin();iter!=C.end();iter++)
cout<<*iter<<' ';//查看C的元素,是按升序输出的

猜你喜欢

转载自blog.csdn.net/skykone1/article/details/86562992