list 的操作总结

list是链表的容器操作,能更快的插入删除

#include<list>

list<int> v;

一、添加数据操作

        1.v.assign(4, 1);//将v的数据替换为4个1;

        2.v.push_back(2);//在尾巴插一个2

        3.v.push_front(3);//在头插一个3

        4.v.emplace_back(4);//在尾巴插4

        5.v.emplace_front(5);//在头插5

push与emplace有什么区别呢,我们更常用push,但是emplace其实效率更高,它省略了移动元素操作

        6.v.emplace(v.begin(),int value);//it是迭代器,会删除当前迭代器的元素

        7.v.insert(v.begin()+1,100)在第二个位置插一个100

        8.v.insert(v.begin()+1,3,100);//这个意思是在第2的位置开始插入3个100

        9.v.insert(v.begin() + 1, b , b + 2);//注意b为数组,将b从0~1(2不包含)的元素插到1的

二、查看数据

(1)不能v[n]注意;

(2)不能at

(3)一些其他函数查看值

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

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

(4)好像没什么能按照位置找数据的,不过可以直接用遍历找

三、空间分配

这个没什么好分配的,因为链表不需要提前分配嘛

四、其他操作

        1.v.size(); //返回v中元素的个数;

        2.//没有v.capacity()的哦;

        3.v.clear(); //清空v中的元素

        4.v.empty(); //判断v是否为空,空则返回ture,不空则返回false

        5.v.pop_back(); //删除v向量的最后一个元素

        6.v.pop_froat();//删除头部元素

        7.v.swap(b); //b为向量(就是list开辟的),将v中的元素和b中的元素进行整体性交换

        8.v.begin();//返回起始迭代器位置

        8.v.end();//返回最后迭代器(没有数据!!!)

        9.使用reverse_iterator反向迭代器

                (1)v.rend();//返回起始迭代器位置

                (2)v.regain();/返回最后迭代器(没有数据!!!)

        10.v.erase(v.begin()+1,v.begin()+3); //删除a中第1个(从第0个算起)到第2个元素,删除数据

        11.v.remove(4);//删除全部4的节点

五、list才有的内函数成员

        1.v.reverse();//方向反掉

        2.v.sort();//排好序(默认从小到大)

        3.v.merge(m);//m为另一个list容器,但是v,m都要从小到大顺序,否则报错

        4.v.merge(m,greater<int>());//greater是库里面提供的,当然还要less(所以默认从小到大)

        5.v.splice(v.begin(),m, m.begin(), m.end());//要插的起始位置,被插迭代器,起始位置+截至位置。(注意:这里发现list的+号没有重载,不能写v.begin()+1)但是++好像重载了

        6.    v.unique();//删除相同的元素(保留一个)
 

遍历容器

for (list<int>::iterator it = v.begin(); it != v.end(); ++it)
   {
        cout << *it << " ";
    }

如果非要一个位置的数据,我建议可以用循环,设置int n,然后--n到0;

  2.v.sort();//排好序(默认从小到大)

怎么写函数让其从大到小呢?

bool greater(int x,int y)
{
    return x>y;
}

再调用v.sort(greater);即可

当然可以调用库函数嘛

库函数用了模板

所以调用时这样写v.sort(greater<int>());

为什么要加()呢,其实人家是结构体成员嘛。(附加库中排序函数)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值