容器名称 | 特点 | 构造方法 | 常用的方法 |
Vector | Vector是一个简单的高效的容器,线性结构,是数组的一个推广,支持像数组一样随机访问,可以在尾端插入和删除元素,vector具有动态的内存管理功能。(vector含有m_start,m_finsh,m_end_of_storage分别用来表示存放向量的起始位置,当前最后一个向量元素的的末尾字节和整个容器所占内存的末尾字节) |
- ,vector(const A &a=A()),example:vector <int> v;
- ,vector(size_type n),example:vector<int> v(10)-创建含有十个元素的vector对象,默认值为0.
- ,vector(size_type,const T& value),example:vector<int> v(10,1)-创建一个含有十个元素值为1的vector对象。
- ,vector(const vector&),exaple:vector<int>v1(10,1);Vector<int> v2(v1);
- ,vector(const inputIterator first,const InputIterator last,const A&a=A()),example:int iarray[]={1,2,3};vector<int> v(iarray,iarray+2);
|
- Void push_back(const T& value);//尾端插入。
- Iterator end();返回指向最后一个元素的下一个元素的位置。
- Reference operator [],数组下标访问。
- Iterator begin(),返回第一个元素的位置。
- Iterator insert(iterator pos,const T&x),在pos位置上插入X,相比push_back耗时。
- Iterator erase(iterator pos),iterator earse(iterator first,iterator last),删除指定位置元素
- Void clear()删除全部元素。
|
Bit_vector | 位向量容器,bit_vector容器是一个bit位元素的序列容器。一个元素只占一位。 |
- Bit_vector()
- Bit_vector(size_type n)
- Bit_vector(size_type n,bool value)
- Bit_vector(const slist&)
- Bit_vector(inputiterator first,inputiterator last
|
- Iterator end();返回指向最后一个元素的下一个元素的位置。
- Iterator begin()返回第一个元素的位置。
- Reference operator [],数组下标访问。
- Iterator insert(iterator pos,bool x),在pos位置上插入X,相比push_back耗时。
- void Pop_back();// 删除最后一个元素
- Iterator erase(iterator pos),iterator earse(iterator first,iterator last),删除指定位置元素
- Void clear()删除全部元素。
- reverse_iterator rbegin();
- reverse_iterator rend();
- void swap(bit_vector &);
- void swap(Bit_reference x,Bit_reference y);
- bool emoty();
- size_type size();
- size_type capacity();
|
Stack | 栈是一个线性表,只支持在一端进行插入与删除,栈是先进后出。 |
- Stack()
- Stack(const stack&)
|
- Void push();//入栈
- Void pop();//出栈
- Value_type& top();//取栈顶元素
- Bool empty();//判断栈空
- Size_type size();//返回栈中元素个数
|
Queue | 队列是一种线性存储表,元素数据只能在一端插入,在另一端删除。队列是先进先出的特点。 |
- queue();
- queue(const queue&);
|
- Void push(const value_type &x);//元素入队。
- Void pop();//元素出队。
- Value_type& front();//取出队首元素。
- Value_type& back();//取出队尾元素。
- Bool empty();//判断队列是否为空。
- Size_type size();//返回队列当前元素个数。
|
Priority_queue | 优先队列具有队列所有大的特征,包括基本操作,只是增加了一个内部排序的功能。队列中最值元素总是位于队首位置,出队总是出最值元素。(联想到堆) |
- Priority_queue();
- Priority_queue(const priority_queue&);
- priority_queue<Type, Container, Functional>
- 小根堆priority_queue<int,vector<int>,less<int>>b;
|
- Void push(const value_type&)
- Void pop();
- Bool empty();
- Const value_type& Top();//返回队首元素
- Size_type size();
|
Deque | 双端队列容器,可在头部和尾部进行0(1)的插入语删除 |
- Deque()
- Deque(size_type n)
- Depue(size_type n,const T& value)
- Deque(const deque&)
- Deque(const inputiterator first,const inputiterator last,const A& a=A())
|
- Void push_back(const T&);尾部//插入
- Void push_front(const T&);//头部插入
- Iterator begin();
- Iterator end();
- Iterator insert(iterator pos,const T& x);//pos位置之前插入x
- Void pop_front();//删除头部元素
- Void pop_back();//删除尾部元素
- Iterator earse(iterator pos);//删除pos位置元素
- Iterator earse(iterator first,iterator last);//删除区间[first,last)的元素
- Void clear();//删除所有元素
- Reverse_iterator rbegin();reverse_iterator_iterator rend();// 反向遍历
- Void swap(deque &);//交换两队列
- Bool empty();
- Size_type size();
- Reference front();//返回头部元素
- Reference back();//返回尾部元素
|
stirng | string是一个基于字符的序列容器,具有vector向量一样的内部线性结构,最后以null结尾。 |
- String();
- String(const string& s,size_type pos=0,size_type n=npos)
- String(const char*)
|
- Void push_back(char c);//尾部添加
- String& append(const char* s);//将string字符串尾部添加字符串
- String& append(const string& s)
- Iterator insert(iterator pos,const char& c);
- Iterator begin();iterator end();
- Reverse_iterator rbegin();reverse_iterator rend();//逆向遍历
- Iterator earse(iterator pos);iterator earse(iterator first,iterator last);
- String& earse(size_type pos=0,size_type n=npos);//删除字符串从索引位置pos开始的n个字符
- Void clear();//删除
- String& replace(size_type pos,size_type n,const char * s);//从索引位置n开始后n个字符替换为s
- String& replace(size_type pos,size_type n,size_type n1,char c);//将从索引pos位置后n个字符替换成n1了c字符
- String& replace(iterator first,iterator last,const char*s)
- Size_type find(const char *s,size_type pos=0);//从pos位置查找子串位置
- Size_type find(char c,pos=0)
- Size_type rfind(const char*s,size_type pos=npos);//逆向查找
- Size_type rfind(char c)
- Size_type find_first_of(const char* s,size_type pos=0)
- Int compare(const string& s);//比较
- Size_type length();
- Size_type size();
- Bool empty();
|
Slist | 单向列表容器-单链表 |
- Slist()
- Slist(size_type n)
- Slist(size_type n,const T&value)
- Slist(const slist&)
- Slist(inputiterator first,inputiterator last)
|
- Void Push_ffont(const value&)//头插
- Iterator begin();
- iterator end();
- Iterator insert_after(iterator pos,const T&x)
- Iterator insert(iterator pos,const T& x)
- Void pop_front()
- Iterator erase(iterator pos)
- Iterator erase(iterator first,iterator last)
- Void clear()
- Void remove(const T& value);//移除所有值为value的元素
- Void swap(slist&)
- Void splice(iterator position,slist& x);//将x表归并到pos之前,x表删除
- Void splice(iterator pos,slist &x,iterator i);//将x中i的位置归并到pos位置,并在x中删除i位置元素
- Void merge(slist& x)//将对象x链表归并到当前链表中
- Void sort();//进行排序
- Void unique();//用于删除连续重复的元素
|
List | 双向链表容器 |
- List()
- List(size_type n)
- List(size_type n,const T&value)
- List(const slist&)
- List(inputiterator first,inputiterator last)
|
- Void push_back(const &T);//将元素尾插到链表中
- Iterator begin();
- Iterator end();
- Void push_front(const &T);//头插
- Iterator insert(iterator pos,const T& x);
- Void pop_front();
- Void pop_back();
- Iterator earse(iterator pos);
- Iterator earse(iterator first,iterator lase)
- Void clear()
- Void remove(const T & vlaue)
- Reverse_iterator rbegin();
- Reverse_iterator rend();
- Void swap(list&)
- Void splice(iterator position,list& x);//将x表归并到pos之前,x表删除
- Void splice(iterator pos,list&x,iterator i);//将x中i的位置归并到pos位置,并在x中删除i位置元素
- Void merge(list& x)//将对象x链表归并到当前链表中
- Void sort();//进行排序
- Void unique();//用于删除连续重复的元素
|
set | set集合容器不允许存在重复的元素,且使用一种红黑树的的平衡二叉检索树的数据结构-故数据有序。 |
- set();
- set(const key_compare& comp);// 自定义比较函数对象的set容器,例如:struct strless{ bool operator()(const char * s1,const char * s2)const{ return strcmp(s1,s2)<0;}};,创建对象,set<const char*,strless> s(strless());
- set(const set&)
- set(inputiterator first,iterator last)
- set(inputiterator first,iterator last,const key_compare& comp)
|
- pair<iterator,bool> insert(const value_type& v);//不重复的插入
- iterator insert(iterator pos,const value_type&);
- void insert(iterator first,iterator last);
- void erase(iterator pos);
- size_type erase(const key_type&k);//删除k值元素
- void erase(iterator first,iterator last);
- void clear();
- iterator begin();
- iterator end();
- reverse_iterator rbegin();
- reverse_iterator rend();
- iterator find(const key_type l)const;
- bool empty();
- size_type size();
- iterator lower_bound(const key_type& k) const;//返回小于等于k的第一个元素的位置
- iterator upper_bound(const key_type& k) const;//返回大于k的第一个元素的位置
|
multiset | 多重集合容器,可以允许集合中存在重复的元素且元素有序。 |
- multiset();
- multiset(const key_compare& comp);// 自定义比较函数对象的set容器,例如:struct strless{ bool operator()(const char * s1,const char * s2)const{ return strcmp(s1,s2)<0;}};,创建对象,multiset<const char*,strless> s(strless());
- multiset(const multiset&)
- multiset(inputiterator first,iterator last)
- set(inputiterator first,iterator last,const key_compare& comp)
|
- iterator insert(const value_type& v);
- iterator insert(iterator pos,const value_type&);
- void insert(iterator first,iterator last);
- void erase(iterator pos);
- size_type erase(const key_type&k);//删除所有k值元素,并返回删除所有k的个数
- void erase(iterator first,iterator last);
- void clear();
- iterator begin();
- iterator end();
- reverse_iterator rbegin();
- reverse_iterator rend();
- iterator find(const key_type l)const;
- bool empty();
- size_type size();
- size_type count(const key_type& k)const;//统计键值等于k的元素个数
- iterator lower_bound(const key_type& k) const;//返回小于等于k的第一个元素的位置
- iterator upper_bound(const key_type& k) const;//返回大于k的第一个元素的位置
|
hash_set | 哈希集合容器是一种使用哈希表数据结构的具有高效数据检索的关联容器。hash_set的元素在内部的数据结构并不是呈现次序的关系的,并且要求数据数据存在且唯一。 |
- hash_set()
- hash_set(size_type n)
- hash_set(size_type n,const hasher& h);//hasher为哈希函数
- hash_set(size_type n,const hasher& h,const key_equal& k);//key_equal为键值比较函数
- hash_set(const hash_set&)
|
- pair<iterator,bool> insert(const value_type& v)
- void insert(iterator first,iterator last)
- iterator begin()
- iterator end()
- void erase(iterator pos)
- size_type erase(const key_type& k);//删除值为k的所有元素并返回删除个数
- void erase(iterator first,iterator last)
- void clear()
- iterator find(const key_type& k);//进行元素的查找,若是找不到则返回末尾end()
- bool empty()
- size_type size()
- size_type bucket_count() const;//返回哈希表的表长
|
map | map映照容器,键值和数据之间可以存在映照关系,插入的元素键值不允许重复,且使用一种红黑树的的平衡二叉检索树的数据结构-故数据有序。 |
- map();// map<char,int,great<char>> m;
- map(const key_compare& comp);//comp为自定义的比较函数对象
- map(const map&)
- map(inputiterator first,iputiterator last)
- map(inputiterator first,iputiterator last,const key_compare& comp)
- 注意insert的插入格式
|
- pair<iterator,bool> insert(const value_type& v)
- iterator insert(iterator pos,const value_type& v)
- void inset(inputiterator first,inputiterator last)
- void erase(iterator pos)
- size_type erase(const value_type& k);//删除值为k的所有元素并返回删除个数
- void erase(iterator first,iterator last)
- void clear()
- iterator begin()
- iterator end()
- reverse_iterator rbegin()
- reverse_iterator rend()
- iterator find(const value_type& k);
- bool empty()
- size_type size();
|
multimap | 多重映照容器,有序且允许重复的键值。unordered_map也有类似的无序的哈希值的功能。 |
- multimap();// map<char,int,great<char>> m;
- multimap(const key_compare& comp);//comp为自定义的比较函数对象
- multimap(const multimap&)
- multimap(inputiterator first,iputiterator last)
- multimap(inputiterator first,iputiterator last,const key_compare& comp)
|
- pair<iterator,bool> insert(const value_type& v)
- iterator insert(iterator pos,const value_type& v)
- void inset(inputiterator first,inputiterator last)
- void erase(iterator pos)
- size_type erase(const value_type& k);//删除值为k的所有元素并返回删除个数
- void erase(iterator first,iterator last)
- void clear()
- iterator begin()
- iterator end()
- reverse_iterator rbegin()
- reverse_iterator rend()
- iterator find(const value_type& k);
- bool empty()
- size_type size();
- size_type count(const key_type& k)const;//统计键值等于k的元素个数
- iterator lower_bound(const key_type& k) const;//返回大于等于k的第一个元素的位置
- iterator upper_bound(const key_type& k)
|
hash_map | 哈希映照容器,不允许重复,使用的是哈希表的数据结构 |
- hash_map()
- hash_map(size_type n)
- hash_map(size_type n,const hasher& h);//hasher为哈希函数
- hash_map(size_type n,const hasher& h,const key_equal& k);//key_equal为键值比较函数
- hash_map(const hash_map&)
|
- pair<iterator,bool> insert(const value_type& v)
- void insert(iterator first,iterator last)
- iterator begin()
- iterator end()
- void erase(iterator pos)
- size_type erase(const key_type& k);//删除值为k的所有元素并返回删除个数
- void erase(iterator first,iterator last)
- void clear()
- iterator find(const key_type& k);//进行元素的查找,若是找不到则返回末尾end()
- bool empty()
- size_type size()
- size_type bucket_count() const;//返回哈希表的表长
|