{大赦客之陸}

一定不換模板啊

很醜的Index

map

set

queue

FIFO

queue

佇列

First-In-First-Out

FIFO

#include <queue>

宣告

queue<int> q;
//queue<T> name;

queue<變數型態> 名稱;

.push()

queue<int> q;
q.push(1);
q.push(2);
q.push(3);

把東西push進queue

1

2

3

.front();.back()

queue<int> q;
cout<<q.front();
//1
cout<<q.back();
//3

回傳第一項跟最後一項

1

2

3

front

back

.pop()

queue<int> q;{1,2,3}
q.pop();{2,3}

移除第一項

1

2

3

front

back

2

3

back

.size();.empty()

queue<int> q;
cout<<q.size();//2
cout<<q.empty();//0

回傳queue的大小

回傳queue是否為空

2

front

3

back

.swap

queue<int> q1;
    queue<int> q2;
    q1.push(2);
    q2.push(3);
    q1.swap(q2);//swap(q1,q2)
    cout<<q1.front();//3

交換兩個queue的元素

🫨注意只能在c++11用😑

這是補充(c++11)

template <typename T>
class Q{
    public:
        T front(){
            return data_.front();
        }

        T back(){
            return data_[data_.size()-1];
        }

        int size(){
            return data_.size();
        }

        void push(T a){
            data_.push_back(a);
        }

        void pop(){
            for(int i=0;i<data_.size();i++){
                data_[i]=data_[i+1];
            }
            data_.pop_back();
        }

        bool empty(){
            return data_.empty();
        }
    private:
        vector<T> data_;
};

聽說apcs會要你看手刻的queue

對不起我弱我不會寫O(1)的

stack

FILO

stack

堆疊

First-In-Last-Out

FILO

#include <stack>

宣告

stack<int> s;
//stack<T> name;

stack<變數型態> 名稱;

別問為啥是橫的
自己修圖一下轉90度

.push()

stack<int> s;
s.push(1);
s.push(2);
s.push(3);

把東西push進stack

1

2

3

.top()

stack<int> s;
cout<<s.top();
//3

回傳最右邊(最上面的值)

1

2

3

top

.pop()

stack<int> s;
s.pop();

移除最右邊(最上面的值)

1

2

3

top

top

.size();.empty()

queue<int> s;
cout<<s.size();//2
cout<<s.empty();//0

回傳queue的大小

回傳queue是否為空

1

2

template<typename T>
class S{
    public:
        T top(){
            return data_[0];
        }

        int size(){
            return data_.size();
        }

        bool empty(){
            return data_.empty();
        }

        void push(T a){
            data_.push_back(a);
        }

        void pop(){
            data_.pop_back();
        }

    private:
        vector<T> data_;
};

聽說apcs也會要你看手刻的stack

Made with Slides.com