List 使用记录

-Introduction : 本文开始记录关于list结构的使用技巧总结,可能会涉及一些initial_list的内容


删除list中某个特定元素
- 1.遍历,最好使用begin + end的方式遍历
- 2.避免断链问题

     for ( Itor = MyList.begin(); Itor != MyList.end(); )
     {
         if ( *Itor == 4 )
         {
             Itor = MyList.erase(Itor);

             //注意,这里一定要这么写
             //不能写 MyList.erase(Itor)  否则出现断链问题

         }
         else
         {
             Itor++;
         }
     }

错误记录:

  • (1). 删除列表元素,是一定会修改列表内容的,因此在删除函数的形参位置,不能写const关键字

    • void delete_element_in_list(const list<char> &list1) 这种写法,因为会修改列表元素,不行

    • void delete_element_in_list(const A &anA) 且A中包含要删除的list,修改了内容,不可以的

  • (2). 执行对象要求是const typename* &anA 的时候不能使用 “this”关键字来代替,原因是这样的内容必须是一个lvalue

    • 不是很明白为什么,但是把”&”关键字删掉,const关键字保留,这里就可以填写this
    • 总而言之,this就是不能成为,像普通变量那样的,顺利嵌套进 const + &的结构
    • this 最多只能成为const 但是不能成为 & -> 原因: 只有变量才可以使用 &的方法

    • 问题总结:this关键字代表的是一种类似常量的 “右值”,但是&符号仅针对左值才能使用

    • 但是右值左值的转换是很麻烦的操作,相比之下,放弃使用&符号,或者用&但是不用this划算很多

    • list的使用 const与&结合使用,但是单个对象就可以单独使用const 或者&

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值