queue、deque、stack、 list用法区别简介

 

  • Map

Map是键值对,键Key是唯一不能重复的,一个键对应一个值,值可以重复。 
TreeMap可以保证顺序,HashMap不保证顺序,即为无序的。 
Map中可以将Key和Value单独抽取出来,其中KeySet()方法可以将所有的keys抽取正一个Set。而Values()方法可以将map中所有的values抽取成一个集合。

 

  • Set

不包含重复元素的集合,set中最多包含一个null元素 
只能用Lterator实现单项遍历,Set中没有同步方法。

 

  • List

有序的可重复集合。 
可以在任意位置增加删除元素。 
用Iterator实现单向遍历,也可用ListIterator实现双向遍历

 

  • Queue

Queue遵从先进先出原则。 
使用时尽量避免add()和remove()方法,而是使用offer()来添加元素,使用poll()来移除元素,它的优点是可以通过返回值来判断是否成功。 
LinkedList实现了Queue接口。 
Queue通常不允许插入null元素。

  •  

    Stack

    Stack遵从后进先出原则。 
    Stack继承自Vector。 
    它通过五个操作对类Vector进行扩展,允许将向量视为堆栈,它提供了通常的push和pop操作,以及取堆栈顶点的peek()方法、测试堆栈是否为空的empty方法等 

用法

如果涉及堆栈,队列等操作,建议使用List 

对于快速插入和删除元素的,建议使用LinkedList 

如果需要快速随机访问元素的,建议使用ArrayList

资料引自:http://blog.csdn.net/oLaoHuBuChiRen1/article/details/51127151

 

queue与deque的区别

                                                queue (先进先出)                         deque(双端队列)
头文件                                       #include <queue>                         #include <deque>
定义                                            queue<double> q;                        deque<double> q;
访问队列中的元素个数                          q.size()                                        q.size()
判断队列空                                          q.empty()                                   q.empty() 
尾部压入新元素                                    q.push(x)                                q.push_back(x)
头部压入新元素                                       EOF                                      q.push_front(x)
弹出队列的第一个元素                           q.pop()                                  q.pop_front()
弹出队列的最后一个元素                          EOF                                     q.pop_back()
访问队首元素                                        q.front()                                      q.begin()
访问队尾元素                                        q.back()                                      q.end()
删除所有元素                                           EOF                                          q.clear()
删除任意位置x                                         EOF                                   q .erase(q.begin() + x)

 

stack用法:

stack(后进先出)
s.push(x);        入栈
s.pop();           出栈
s.top();            访问栈顶元素
s.empty();       判断栈空

s.size();           访问栈中元素个数

 

list

begin()和end()                              访问头尾
push_back()和push_front()           插入头尾
empty()                                         辨是否空
clear()                                            清除链表
front()和back()                               弹出头尾
pop_back()和pop_front()               删除头尾
swap()                                            交换链表
reverse()                                         逆置链表 reverse(b.begin(),b.end());
merge()                                          清空置换 a.merge(b); //b变为空,a中元素包含原来a和b的元素
insert()                                           指定插入    a.insert(a.begin(),b.begin(), b.end()); //在a的开始位置插入                                                                                 b从开始到结束所有元素

erase()                               指定删除 a.erase(a.begin(),a.end());

                                                      //将a的从begin()到    end()    之    间    的    元    素删除 

remove()                        删除元素 a.remove(7); //删除a中所有值为7的元素
assign()                            (1)a.assign(n, val):将a中的所有元素替换成n个val元素
                                           list<int>b{1,2,3,4,5};  //注意语法错误  
                                           b.assign(5,10); b中的元素变为10, 10, 10, 10, 10
                                       (2)a.assign(b.begin(), b.end())
                                          list<int>a{6,7,8,9};
                                          list<int>b{1,2,3,4,5};
                                          b.assign(a.begin(),a.end());
                                          b中的元素变为6,7,8,9
resize() //调用resize(n)将list的长度改为只容纳n个元素,超出的元素将被删除。如果n比list原来的长度长,那么默认超出的部分元素置为0。也可以用resize(n, m)的方式将超出的部分赋值为m。

remove_if()    你猜~

 

本文大致介绍queue、deque、stack、 list用法区别,若有错误请联系博主更改

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值