queue容器和List容器

queue容器

先进先出

队列容器允许从一端新增元素,从另一端移除元素

队列中只有队头和队尾才可以被外界使用,因此不允许有遍历行为,如果一定要访问对内的某个元素,只能将其前面的元素全部从队中删除,使之成为队头才可以

入队操作只在队尾进行,出队操作只在队头进行

list容器

list实现为一个双向链表,他不能实现随机访问,但可以高效地在任意位置插入和删除元素。(当在列表中插入一个元素时,不需要移动任何元素,只需要创建一个新的链表节点并修改前后两个节点的指针。当删除元素时,需要释放被删除节点所占用的空间,然后修改前后两个节点的指针,不需要移动任何元素。)所以list中插入和删除元素效率很高。并且,链表采用

缺点:容器遍历速度没有数组快,占用的空间比数组大(链表数据int占4个,指针占4个。数组,数据int占四个)

list赋值和交换
//赋值
list<int>l1;
void printList(const list<int>&L)
{for(list<int>::const_iterator it=L.begin();it!=L.end();it++)
{
cout<<*it;
}
}
l1.push_back(10);
l1.push_back(20);
l1.push_back(30);
l1.push_back(40);
printList(l1)//10,20,30,40
list<int>l2;
l2=l1;
list<int>l3;
l3.assig(l2.begin(),l2.end());
list<int>l4;
l4.assign(10,100);
//交换
list<int>l5;
l5.assign(10,100);
l1.swap(l2);
list大小操作

size()//返回容器中元素个数

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

resize(num)//重新指定容器的长度为num,若容器变长,则以默认值填充新位置,如果容器变短,则末尾超出容器长度的元素被删除

list不可以用at,[]进行访问,原因:list本质是链表,不是用连续线性空间存储数据,迭代器也不支持随机访问

list反转和排序操作

反转:

List<int>l1;
l1.reverse();
//所有不支持随机访问迭代器的容器,不可以用标准算法
//不支持随机访问迭代器的容器内部会提供对应一些算法
l1.sort();//默认排序从小到大
bool mycompare(int v1,int v2)
{
//降序,让第一个数大于第二个数
return v1>v2;
}

l1.sort(mycompare)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值