一定不換模板啊
很醜的Index
map
set
queue<int> q;
//queue<T> name;
queue<變數型態> 名稱;
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
把東西push進queue
queue<int> q;
cout<<q.front();
//1
cout<<q.back();
//3
回傳第一項跟最後一項
front
back
queue<int> q;{1,2,3}
q.pop();{2,3}
移除第一項
front
back
back
queue<int> q;
cout<<q.size();//2
cout<<q.empty();//0
回傳queue的大小
回傳queue是否為空
front
back
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<int> s;
//stack<T> name;
stack<變數型態> 名稱;
別問為啥是橫的
自己修圖一下轉90度
stack<int> s;
s.push(1);
s.push(2);
s.push(3);
把東西push進stack
1
2
3
stack<int> s;
cout<<s.top();
//3
回傳最右邊(最上面的值)
1
2
3
top
stack<int> s;
s.pop();
移除最右邊(最上面的值)
1
2
3
top
top
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