C++中vector,stack,queue,deque,priority_queue的基本操作

主要是记录上述的基本操作,以防忘记,可以随时查阅

vector

基本操作

  • vector<Type> M 定义一个vector的变量
  • M.push_back(a) 尾部插入数字
  • M.insert(vec.begin() + i, a) 插入元素: 在第i+1个元素前面插入a
  • M.erase(vec.begin() + 2) 删除元素 删除第三个元素
  • M.erase(vec.begin() + i, vec.begin() + j) 删除区间
  • M[0] 使用下标访问元素: 下标从0开始
  • M.size() 向量大小:
  • M.clear() 清空

stack

基本操作

  • stack<Type> M 定义一个stack的变量
  • M.push() 在栈顶增加元素
  • M.pop() 移除栈顶元素
  • M.top() 返回栈顶元素
  • M.size() 返回栈中元素数目
  • M.empty() 堆栈为空则返回真

queue

  • queue<Type> M 定义一个queue的变量
  • M.push()从已有元素后面增加元素
  • M.pop()清除第一个元素
  • M.front()显示第一个元素
  • M.back()显示最后一个元素
  • M.size()输出现有元素的个数
  • M.empty()查看是否为空范例 是的话返回1,不是返回0;

deque

基本操作

  • deque<Type> M 定义一个deque的变量
  • M[ ]:用来访问双向队列中单个的元素。
  • M.front():返回第一个元素的引用。
  • M.back():返回最后一个元素的引用。
  • M.push_front(x):把元素x插入到双向队列的头部。
  • M.pop_front():弹出双向队列的第一个元素。
  • M.push_back(x):把元素x插入到双向队列的尾部。
  • M.pop_back():弹出双向队列的最后一个元素。
  • M.size()输出现有元素的个数
  • M.empty()查看是否为空范例 是的话返回1,不是返回0;

priority_queue

  • priority_queue<int> M 定义一个优先级队列的变量(默认大根堆)
  • M.push(x):把元素x插入到大根堆中
  • M.pop():弹出大根堆的堆顶元素
  • M.top() 返回大根堆元素
  • M.size():弹出大根堆的元素个数
  • M.empty() :是否为空
  • priority_queue<int, vector<int>, greater<int> > p 小根堆

priority_queue<Type, Container, Functional>
//Type为数据类型, Container为保存数据的容器,Functional为元素比较方式。
//如果不写后两个参数,那么容器默认用的是vector,比较方式默认用operator<,也就是优先队列是大顶堆,队头元素最大。
struct Node{  
    int x,y;  
    Node(int a=0, int b=0):  
        x(a), y(b) {}  
}; 

struct cmp{  
    bool operator()(Node a, Node b){  
        if(a.x == b.x)  return a.y>b.y;  
        return a.x>b.x;  
    }  
};  
priority_queue<Node, vector<Node>, cmp>p; 

猜你喜欢

转载自blog.csdn.net/weixin_39953502/article/details/79831275
今日推荐