目录
Non-member class specializations
Non-member functions overloads
3.1priority_queue优先级队列//默认less为大堆
Non-member class specializations
一、queue
1.1 queue队列


//使用deque的封装对象作为queue的底层容器
#include<iostream>
#include<deque>
using namespace std;
namespace bit
{
template<class T, class Con = deque<T>>
class queue
{
public:
queue(){}
void push(const T& x) {
_c.push_back(x);
}
void pop() {
_c.pop_front();
}
T& back() {
return _c.back();
}
const T& back()const {
return _c.back();
}
T& front() {
return _c.front();
}
const T& front()const {
return _c.front();
}
size_t size()const {
return _c.size();
}
bool empty()const{
return _c.empty();
}
private:
Con _c;
};
};
1.2相关函数
Member functions(constructor)//可用deque或者list初始化 emplace Construct and insert element after its current last element//没有返回值 Non-member function overloadsrelational operators//这些比较运算符要求两个队列的底层容器类型必须相同,并且底层容器中的元素类型也必须支持相应的比较运算。 Non-member class specializations |
二、dequeue
2.1dequeue双端队列
2.2相关函数
Member functionsConstruct deque container (public member function )
Deque destructor (public member function ) Assign content (public member function ) Iterators: Return iterator to beginning (public member function ) Return iterator to end (public member function ) Return reverse iterator to reverse beginning (public member function ) Return reverse iterator to reverse end (public member function ) Return const_iterator to beginning (public member function ) Return const_iterator to end (public member function ) Return const_reverse_iterator to reverse beginning (public member function ) Return const_reverse_iterator to reverse end (public member function ) Capacity: Return size (public member function ) Return maximum size (public member function ) resize//size大于n则删除多的,小于则补充val Change size (public member function )
Test whether container is empty (public member function ) Shrink to fit (public member function ) Element access: Access element (public member function ) Access element (public member function ) Access first element (public member function ) Access last element (public member function ) Modifiers: assign//替换现有的 Assign container content (public member function )
Add element at the end (public member function ) Insert element at beginning (public member function ) Delete last element (public member function ) Delete first element (public member function ) Insert elements (public member function )
Erase elements (public member function )
Swap content (public member function ) Clear content (public member function ) Construct and insert element (public member function )
emplace_front //没有返回值 Construct and insert element at beginning (public member function ) emplace_back //没有返回值 Construct and insert element at the end (public member function ) Allocator: Get allocator (public member function ) Non-member functions overloadsRelational operators for deque (function ) Exchanges the contents of two deque containers (function template ) |
三、priority_queue
3.1priority_queue优先级队列//默认less为大堆


//使用vector的封装对象作为priority_queue的底层容器
#include<iostream>
#include<vector>
using namespace std;
namespace bit{
template <class T, class Container = vector<T>, class Compare = less<T> >
class priority_queue{
public:
priority_queue() {};
void AdjustDwonwards(T parent) {
int child = parent * 2 + 1;
while (child < c.size()) {
if (child + 1 < c.size() && comp(c[child], c[child + 1])) {
child = child + 1;
}
if (comp(c[parent], c[child])) {
swap(c[child], c[parent]);
parent = child;
child = parent * 2 + 1;
}
else {
break;
}
}
}
//0
//1 2
//3 4 5 6
void AdjustUpwards(T child) {
int parent = (child - 1) / 2;
while (child >0) {
if (child + 1 < c.size() && comp(c[child], c[child + 1])) {
child = child + 1;
}
if (comp(c[parent], c[child])) {
swap(c[child], c[parent]);
child = parent;
parent = (child - 1) / 2;
}
else {
break;
}
}
}
template <class InputIterator>
priority_queue(InputIterator first, InputIterator last) {
for (InputIterator it = first; it != last;) {
c.push_back(*it);
it++;
}
for (int i = c.size() / 2 - 1; i >= 0; i--) {
AdjustDwonwards(i);
}
}
bool empty() const {
return c.empty();
}
size_t size() const {
return c.size();
}
const T& top() const {
return c[0];
}
void push(const T& x) {
c.push_back(x);
AdjustUpwards(c.size() - 1);
}
void pop() {
swap(c[0], c[c.size() - 1]);
c.pop_back();
AdjustDwonwards(0);
}
private:
Container c;
Compare comp;
};
};
3.2相关函数
Member functionsConstruct priority queue (public member function )
Test whether container is empty (public member function ) Return size (public member function ) Access top element (public member function ) Insert element (public member function ) emplace //在末尾插入,没有返回值 Construct and insert element (public member function ) Remove top element (public member function ) Swap contents (public member function ) Non-member function overloadsExchange contents of priority queues (public member function ) Non-member class specializationsUses allocator for priority queue (class template ) |











被折叠的 条评论
为什么被折叠?



