c_cpp 使用矢量擦除实现队列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 使用矢量擦除实现队列相关的知识,希望对你有一定的参考价值。

#include<bits/stdc++.h>
using namespace std;

// #Queue #BasicProblem

bool isEmpty(vector<int> Q){
    if(Q.size()==0){
        return true;
    }else{
        return false;
    }
}
void Enq(vector<int> &Q, int push){
    Q.push_back(push);
}
bool Deq(vector<int> &Q,int &front){
    if(isEmpty(Q)==true){
        return false;
    }else{
        front=Q[0];
        Q.erase(Q.begin()+0); //erasing first element
        return true;
    }
}
int main() {
    cout<<"Instructions: \n";
    cout<<"Type add to Enqueue"<<endl;
    cout<<"Type del to Dequeue"<<endl;
    cout<<"Type exit to stop using the Queue"<<endl;
    vector<int> Q;
    int front;
    while(1){
        string instruction;
        cout<<"Instruction: ";
        cin>>instruction;
        if(instruction=="exit"){
            break;
        }else if(instruction=="add"){
            cout<<"Enter the element top be enqueued"<<endl;
            int push; //element to be enqueued
            cin>>push;
            Enq(Q,push);
            cout<<"Element "<<Q[Q.size()-1]<<" successfully enqueued"<<endl;
        }else if(instruction=="del"){
            if(Deq(Q,front)==true){
                cout<<"Element "<<front<<" successfully Dequeued"<<endl;
                if(isEmpty(Q)==false){
                        cout<<"Front Element is:"<<Q[0]<<endl;
                }else{
                    cout<<"Queue is now Empty!"<<endl;
                }
            }else{
                cout<<"ERROR : Queue is empty!"<<endl;
            }
        }else{
            cout<<"ERROR : Unknown operation! Please try again"<<endl;
        }
    }
    return 0;
}

以上是关于c_cpp 使用矢量擦除实现队列的主要内容,如果未能解决你的问题,请参考以下文章

尝试在矢量上使用擦除功能时“没有匹配的调用功能”

Visual C++ 矢量擦除会增加内存使用量?

矢量排序和擦除不起作用

按键擦除矢量元素

擦除矢量时出现分段错误

c_cpp 擦除迭代器