当前位置:网站首页>[hand torn STL] Stack & queue
[hand torn STL] Stack & queue
2022-06-25 06:05:00 【The August】
stack&queue
stack Introduction and use of
- stack Is a container adapter , Specifically used in context with LIFO operations , The deletion can only be performed by inserting and extracting elements from one end of the container .
- stack Is implemented as a container adapter , A container adapter is a container that encapsulates a specific class as its underlying container , And provide a specific set of member functions to access its elements , Use a specific class as its underlying , The tail of an element specific container ( The top of the stack ) Pressed and ejected .
- stack The underlying container can be any standard container class template or some other specific container class , These container classes should support the following operations :
- empty: Empty operation
- back: Get tail element operation
- push_back: Tail insert element operation
- pop_back: Tail delete element operation
- Standard containers vector、deque、list All meet these needs , By default , If not for stack Specify a specific underlying container , By default deque.

notes :stack and queue It's the adapter ( adapter ), Is implemented by transformation , It is not implemented directly , It is implemented by encapsulating other container packaging transformations
stack Use

void test_stack()
{
stack<int> st;
st.push(1);
st.push(2);
st.push(3);
st.push(4);
cout << st.size() << endl;
while (!st.empty())
{
cout << st.top() << " ";
st.pop();
}
cout << endl;
cout << st.size() << endl;
}
stack Simulation Implementation of
#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<deque>
#include<vector>
#include<list>
using namespace std;
namespace lc
{
template<class T,class Container=deque<T>>
//stack It's a container adapter ( Encapsulation conversion ) Coming out
class stack
{
public:
void push(const T& x)
{
_con.push_back(x);
}
void pop()
{
_con.pop_back();
}
const T& top()
{
return _con.back();
}
size_t size()
{
return _con.size();
}
bool empty()
{
return _con.empty();
}
private:
Container _con;
};
}
queue Introduction and use of
- A queue is a container adapter , Used exclusively in FIFO Context ( fifo ) In the operation , Where the element is inserted from one end of the container , Extract the element at the other end .
- Queues are implemented as container adapters , The container adapter encapsulates a specific container class as its underlying container class ,queue Provide a specific set of member functions to access its elements . Elements are queued from the end of the queue , Get out of the queue from the head of the queue .
- The underlying container can be one of the standard container class templates , It can also be other specially designed container classes . The bottom container shall support at least the following operations :
- empty: Check if the queue is empty
- size: Returns the number of valid elements in the queue
- front: Returns a reference to the queue header element
- back: Returns a reference to the end of the queue element
- push_back: Enter the queue at the end of the queue
- pop_front: Get out of the queue at the head of the queue
- Standard container class deque and list Meet these requirements . By default , If not for queue Instantiate the specified container class , Use standard containers deque.

queue Use

void test_queue()
{
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
q.push(4);
cout << q.size() << endl;
while (!q.empty())
{
cout << q.front() << " ";
q.pop();
}
cout << endl;
cout << q.size() << endl;
}
queue Simulation Implementation of
#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<deque>
#include<vector>
#include<list>
using namespace std;
namespace lc
{
template<class T, class Container = deque<T>>
//queue It's a container adapter ( Encapsulation conversion ) Coming out
class queue
{
public:
void push(const T& x)
{
_con.push_back(x);
}
void pop()
{
_con.pop_front();
}
const T& front()
{
return _con.front();
}
const T& back()
{
return _con.back();
}
size_t size()
{
return _con.size();
}
bool empty()
{
return _con.empty();
}
private:
Container _con;
};
}
Container adapter
An adapter is a design pattern ( Design patterns are a set of things that are used repeatedly 、 Most people know that 、 Catalogued 、 Summary of code design experience ), This pattern is to convert the interface of one class into another interface that the customer wants .
notes : although stack and queue You can also store elements in , But in STL It is not divided into the ranks of containers in , Instead, call it a container adapter , This is because stack And queues just wrap the interfaces of other containers ,STL in stack and queue By default deque


Add :
vector( Continuous physical space ):
advantage :
- Random access
- CPU High cache hit rate
shortcoming :
- Space is not enough , Need to increase capacity , Increasing capacity costs a lot , There is also a certain waste of space
- Head and middle insert delete , Low efficiency O(N)
list:
advantage :
- Apply for space on demand to free up space
- Inserting and deleting data anywhere is O(1) Efficient
shortcoming :
- Random access is not supported
- CPU Low cache hit rate
deque Advantages and disadvantages :
- deque , Description is very suitable for head plug removal , Tail insertion and tail deletion , To do stack and queue The default adapter container for
- Insert and delete data in the middle of the double ended queue , It's troublesome and inefficient (1. Move the overall data 、2. Move current buff data – Record each buff Size of array , Every buff The array size is inconsistent )
- deque It's a compromise design , Not extreme enough , Random access is less efficient than vector, Insert delete at any position list
- A pile of data needs to be sorted vector、 Insert and delete at any position list、 Head and tail insert delete multi-purpose deque
notes : combination list and vector Advantages and disadvantages , Can improve the design Central control array ( Pointer array )、 Fixed length buff Array data structure deque
边栏推荐
- CST8227
- A + B Again
- SAP ui5 Application Development Tutorial Part 30 - parameter transfer in the routing process of SAP ui5
- Optimal Parking
- 同花顺软件究竟是什么?网上开户安全么?
- Grep command – powerful text search tool
- Find command – find and search for files
- Multithreading and thread pool
- Tail command – view the contents at the end of the file
- Day13 (inner class, anonymous inner class, API common class)
猜你喜欢

ThreadLocal
Tutorial 35 of SAP ui5 application development - how to deploy locally developed SAP ui5 applications to ABAP server for trial reading

Soft exam information system project manager_ Information system security management - Senior Information System Project Manager of soft test 026
Introduction to the main features of kyma when the cloud native application runs
Go quiz: considerations for function naming return value from the go interview question (more than 80% of people answered wrong)

Rhcsa--- day 6 operation

Timed thread pool

Farewell to Lombok in 996
How SAP ui5 device type detection device API works

Laravel8 fill data
随机推荐
Understanding of process, thread, task queue, event loop, macro task, micro task, execution stack and other concepts in JS
PHP output (print) log to TXT text
Differences and connections between sap ui5 and openui5
RM command – remove file or directory
SAP ui5 beginner tutorial No. 28 - Introduction to the integration test tool OPA for SAP ui5 applications
Create a complete binary tree in array order
PIP connects to Tsinghua source by default
How often should you refactor- How often should you refactor?
What is SAP sup - Sybase unwired platform
Which securities company is good for opening a mobile account? Is it safe to open a mobile account?
Technology inventory: past, present and future of Message Oriented Middleware
Guava immutable set
Vscode voice notes to enrich information (medium)
The simplest way to tell you is to hash and not hash
Day22 send request and parameterization using JMeter
SAP ui5 tutorial for beginners part XXVI - detailed steps for using OData service with mock server trial version
Use generator-easy-ui5 to quickly create the engineering structure of SAP ui5 applications
SAP ui5 Application Development Tutorial Part 30 - parameter transfer in the routing process of SAP ui5
Find command – find and search for files
Soft exam information system project manager_ Management Science (Operations Research) -- senior information system project manager of soft test 033