stack接口:
bool empty() const;
size_type size() const;
reference top(); //reference为引用
const_reference top() const;
void push(const value_type& x);
void pop();
stack默认使用deque来实现。通过stack<T,list<T>>,可以使用标准库的list来实现。
queue接口:
bool empty() const;
size_type size() const;
reference front(); //reference为引用
const_reference front() const;
reference back();
const_reference back() const;
void push(const value_type& x);
void pop();
queue默认使用deque来实现。通过queue<T, list<T>>,可以使用标准库的list来实现。
deque接口:
iterator begin();
iterator end();
reference operator[](size_type n);
reference front();
reference back();
size_type size() const;
bool empty() const;
void push_back(const value_type& t);
void push_front(const value_type& t);
void pop_back();
void pop_front();
void clear();
iterator erase(iterator pos); //返回指向删除位置的迭代器,这个位置现在有元素填充
iterator erase(iterator first, iterator last); // 返回指向第一个删除位置的迭代器
iterator insert(iterator position, const value_type& x);//返回指向新加入元素的迭代器
deque的迭代器设计很复杂。deque是分段连续的,其迭代器是指向每个分段的。然而,每个分段都有三个指针,分别是first\last\cur,指向分段第一个、最后一个和当前的元素。当对迭代器进行操作时,内部实现为对cur的操作,也就实现了对元素而不是分段的操作。可以用find函数来通过迭代器进行查找。
list接口:
iterator begin();
iterator end();
//reference operator[](size_type n); list没有重载[]运算符
reference front();
reference back();
size_type size() const;
bool empty() const;
void push_back(const T& t);
void push_front(const T& t);
void pop_back();
void pop_front();
void clear();
void remove(const T& value); //将数值为value之前的所有元素移除
void unique(); //移除数值相同的连续元素,使其只剩一个。重点:数值相同且连续。
iterator erase(iterator pos); //返回指向删除位置的迭代器,这个位置现在有元素填充
void splice(iterator pos, list&x); //将x接合于Pos所指的位置之前,x必须不同于*this
void splice(iterator pos, list&, iterator i); //将i所指向的元素接合于position所指位置之前,pos
//和x可以指向同一个list
void merge(list&x); //将x合并到*this身上,两个list的内容都必须经过递增排序
void reverse(); //将*this的内容逆向重置
void sort(); //list不能使用stl的sort算法。本函数使用快排实现。
iterator insert(iterator position, const value_type& x);//返回指向新加入元素的迭代器