【学习笔记】《STL使用入门教程》第三讲:容器deque与list

晓石头的博客
邮箱:[email protected]
转载请注明出处,原文链接:http://blog.csdn.net/QIULANZHU/article/details/50465631


一、deque的介绍

deque是”double-endedqueue“的缩写,是双端容器。

deque在接口上和vector非常相似。

 

1deque对象的默认构造

deque采用模版类实现,deque对象的默认构造形式:deque<T> deqT;

如:

deque<int> deqInt; //存放intdeque容器

deque<float> deqFloat; //存放floatdeque容器

deque<string> deqString; //存放stringdeque容器

...

//尖括号内可以是指针类型或者自定义类型

 

2deque对象的带参数构造

deque(beg,end);//构造函数将[beg,end)区间中的元素拷贝给本身。区间左闭右开。

deque(n, elem);//n个元素拷贝给本身

deque(const deque &deq);//拷贝构造函数

 

3deque首尾添加和移除操作

deque.push_back(elem);//尾添加元素

deque.push_front(elem);//首添加元素

deque.pop_back(elem);//尾删除元素

deque.front_back(elem)//首删除元素

 

4deque的数据存取

deque.at(idx);//越界会抛出异常

deque[idx];

deque.front();//返回第一个元素

deque.back();//返回最后一个元素

 

5deque与迭代器

deque.begin();//第一个元素的迭代器

deque.end();//最后一个元素再下一个的迭代器

deque.rbegin();//倒数第一个元素的迭代器

deque.rend();//倒数最后一个再下一个的迭代器

 

6deque的大小

deque.size();//返回容器中的元素

deque.empty();//判断容器是否为空

deque.resize(num)//重新定义容器长度,变长默认值0填充,变短裁剪

deque.resize(num, elem);//重新定义容器长度,变长elem填充,变短裁剪

 

7deque的插入

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)元素

 

8deque的删除

deque.clear();//移除容器所以数据

deque.erase(beg,end);//删除区间[beg,end)数据,返回下一个数据的位置

deque.erase(pos);//删除pos位置的数据,返回下一个数据的位置

 

二、queue的介绍

queue是队列容器,是一种”先进先出“的容器。

queue是简单地装饰deque容器而成的另外一种容器。

 

1queue对象的拷贝构造与赋值

queue(const queue &que);//拷贝构造函数

queue &operator=(const queue &que);//重载等号操作符

 

2queue的数据存取

queue.back(); //返回最后一个元素

queue.front(); //放回第一个元素

 

3queue的大小

queue.empty();//判断队列是否为空

queue.size();//返回队列的大小

 

三、stack的介绍

stack是堆栈容器,是一种”先进后出“的容器

stack是简单地装饰deque容器而成的另外一种容器

 

四、list的介绍

list是一个双向链表容器,可高效地插入删除元素

list不可以随机存取元素,所以不支持.at(idx)函数与[]操作

 

1list对象的带参构造

list(beg,end);//构造函数将[beg,end)区间中的元素拷贝给自身

list(n,elem);//nelem拷贝给本身

list(const list &lst);//拷贝构造函数

 

2list的赋值

list.assign(beg,end);//[beg,end)区间的数据拷贝赋值给自身

list.assign(n,elem);//nelem拷贝赋值给自身

list &operator=(const list &lst);//重载等号操作符

 

3list的大小

list.size(); //容器元素个数

list.empty(); //判断容器是否为空

list.resize(num); //重新指定容器长度,变长默认值0填充,变短裁剪。

list.resize(num, elem);//重新指定容器长度,变长默认值elem填充,变短裁剪。

 

4list之间的元素交换

list.swap(lst);//lst与自身元素交换,等价:swap(list1,list2)

 

5list头尾的添加移除操作

list.push_back(elem);//在容器尾部加入一个元素

list.pop_back();//删除容器的最后一个元素

list.push_front(elem);//在容器开头插入一个元素

list.pop_front();//容器开头移除第一个元素

 

6list的插入

list.insert(pos, elem);//在位置pos插入元素elem,返回新元素的位置

list.insert(pos, n, elem);//在位置pos插入n个元素elem,无返回值

list.insert(pos, beg, end);//在位置pos插入[beg,end)区间元素,无返回值

  

7list的删除

list.clear();//删除容器的所有元素

list.erase(beg, end);//删除[beg,end)区间的数据,返回下一个数据的位置

list.erase(pos);//删除pos位置的数据,返回下一个数据的位置

list.remove(elem);//删除容器中值为elem的元素

 

8list数据颠倒

list.reverse();

例:

int data[] = {1,3,5,7,9};

list<int> listInt(data, data+sizeof(data)/sizeof(data[0]));

listInt.reverse();

  

9list与迭代器

list.begin();//返回容器中第一个元素的迭代器

list.end();//返回容器中最后一个元素的再后面一个元素的迭代器

list.rbegin();//返回倒数第一个元素的迭代器

list.rend();//返回倒数最后一个的再后面一个元素的迭代器

你可能感兴趣的:(list,Queue,stack,STL,deque)