欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-22 22:16:46
...

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

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; 
相关标签: C vector