ACM选修第一周内容整理 3.5

本文介绍C++标准库中的栈(stack)和队列(queue)数据结构的使用方法,包括基本操作如push、pop及size等,并演示了如何进行元素的插入和删除。此外还介绍了sort函数的用法以及如何实现升序和降序排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 万能头文件:
#include<bits/stdc++.h>
Using namespace std;
  • 栈(stack)
    先进后出(First In Last Out, FILO)
 #include<stack>
 using namespace std;
 int main()
 {
     stack<int> s;
     s.push(1); //向栈压入一个元素1.   
     s.push(2);    
     s.push(3);   
     cout << "Top: " << s.top() << endl; //返回栈顶元素值。   
     cout << "Size: " << s.size() << endl;  //返回栈内元素个数。 
     s.pop();  //移除栈顶元素。  
     cout << "Size: " << s.size() << endl;  
     if(s.empty())//返回bool型 判断栈内是否为空。
     {       
         cout << "Is empty" << endl;
     }
     else
     {        
         cout << "Is not empty" << endl;    
    } 
    return 0;
}
  • 队列(queue)
    先进先出(First In First Out, FIFO)
    从底端加入元素,从顶端取出元素
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(){
    vector<int> a;
    for (int i = 0; i < 5; ++i){
        a.push_back(5 - i);
    }
    cout << "Size: " << a.size() << endl;
    a.pop_back();//删除尾部元素。
    a[0] = 1;
    cout << "Size: " << a.size() << endl;
    for (int i = 0; i < (int)a.size(); ++i){
        cout << a[i] << ", " << endl;
    }
    cout << endl;
    return 0;
}
  • sort 排序函数
    默认升序排列
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
    int a[10];
     vector <int> b;
    for(int i=0;i<5;i++)
    {
        cin>>a[i];
         b.push_back(a[i]);
    }
    sort(a,a+5);//此处范围为前开后闭
    sort(b.begin(),b.end());
    for(int i=0;i<5;i++)
        cout<<a[i]<<" ";
        cout<<endl;
    for(int i=0;i<5;i++)
        cout<<b[i]<<" ";
    return 0;
}

降序排列方法:

bool cmp(int a, int b)
{
    return a > b;
}
sort(num, num + 5, cmp); 
//三个变量,最后一个变量为自定义函数。
  • upper_bound 和 lower_bound
    计算有序队列中相同元素的个数
upper_bound(begin, end, value); 
//返回>value的元素的第一个位置。

lower_bound(begin, end, value);
//返回>=value的元素的第一个位置。

num[] = {1,2,2,3,4,5};
lower_bound(num, num + 6, 2)为num + 1
upper_bound(num, num + 6, 2)为num + 3
  • set 和 multiset
    根据特定排列准则,自动将元素排列。
    set不允许元素重复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值