deque是”double-endedqueue“的缩写,是双端容器。
deque在接口上和vector非常相似。
deque采用模版类实现,deque对象的默认构造形式:deque<T> deqT;
如:
deque<int> deqInt; //存放int的deque容器
deque<float> deqFloat; //存放float的deque容器
deque<string> deqString; //存放string的deque容器
...
//尖括号内可以是指针类型或者自定义类型
deque(beg,end);//构造函数将[beg,end)区间中的元素拷贝给本身。区间左闭右开。
deque(n, elem);//n个元素拷贝给本身
deque(const deque &deq);//拷贝构造函数
deque.push_back(elem);//尾添加元素
deque.push_front(elem);//首添加元素
deque.pop_back(elem);//尾删除元素
deque.front_back(elem);//首删除元素
deque.at(idx);//越界会抛出异常
deque[idx];
deque.front();//返回第一个元素
deque.back();//返回最后一个元素
deque.begin();//第一个元素的迭代器
deque.end();//最后一个元素再下一个的迭代器
deque.rbegin();//倒数第一个元素的迭代器
deque.rend();//倒数最后一个再下一个的迭代器
deque.size();//返回容器中的元素
deque.empty();//判断容器是否为空
deque.resize(num);//重新定义容器长度,变长默认值0填充,变短裁剪
deque.resize(num, elem);//重新定义容器长度,变长elem填充,变短裁剪
iterator deque.insert(iterator loc, elem);//在位置pos插入元素elem的拷贝,返回新元素位置
void deque.insert(iterator loc, int n, elem);//在位置pos插入n个元素
void deque.insert(iterator loc, beg, end);//在位置pos插入区间[beg, end)元素
deque.clear();//移除容器所以数据
deque.erase(beg,end);//删除区间[beg,end)数据,返回下一个数据的位置
deque.erase(pos);//删除pos位置的数据,返回下一个数据的位置
queue是队列容器,是一种”先进先出“的容器。
queue是简单地装饰deque容器而成的另外一种容器。
queue(const queue &que);//拷贝构造函数
queue &operator=(const queue &que);//重载等号操作符
queue.back(); //返回最后一个元素
queue.front(); //放回第一个元素
queue.empty();//判断队列是否为空
queue.size();//返回队列的大小
stack是堆栈容器,是一种”先进后出“的容器
stack是简单地装饰deque容器而成的另外一种容器
list是一个双向链表容器,可高效地插入删除元素
list不可以随机存取元素,所以不支持.at(idx)函数与[]操作
list(beg,end);//构造函数将[beg,end)区间中的元素拷贝给自身
list(n,elem);//将n个elem拷贝给本身
list(const list &lst);//拷贝构造函数
list.assign(beg,end);//将[beg,end)区间的数据拷贝赋值给自身
list.assign(n,elem);//将n个elem拷贝赋值给自身
list &operator=(const list &lst);//重载等号操作符
list.size(); //容器元素个数
list.empty(); //判断容器是否为空
list.resize(num); //重新指定容器长度,变长默认值0填充,变短裁剪。
list.resize(num, elem);//重新指定容器长度,变长默认值elem填充,变短裁剪。
list.swap(lst);//将lst与自身元素交换,等价:swap(list1,list2)
list.push_back(elem);//在容器尾部加入一个元素
list.pop_back();//删除容器的最后一个元素
list.push_front(elem);//在容器开头插入一个元素
list.pop_front();//容器开头移除第一个元素
list.insert(pos, elem);//在位置pos插入元素elem,返回新元素的位置
list.insert(pos, n, elem);//在位置pos插入n个元素elem,无返回值
list.insert(pos, beg, end);//在位置pos插入[beg,end)区间元素,无返回值
list.clear();//删除容器的所有元素
list.erase(beg, end);//删除[beg,end)区间的数据,返回下一个数据的位置
list.erase(pos);//删除pos位置的数据,返回下一个数据的位置
list.remove(elem);//删除容器中值为elem的元素
list.reverse();
例:
int data[] = {1,3,5,7,9};
list<int> listInt(data, data+sizeof(data)/sizeof(data[0]));
listInt.reverse();
list.begin();//返回容器中第一个元素的迭代器
list.end();//返回容器中最后一个元素的再后面一个元素的迭代器
list.rbegin();//返回倒数第一个元素的迭代器
list.rend();//返回倒数最后一个的再后面一个元素的迭代器