关于algorithm的sort函数

  sort函数是我们算法比赛中最简单的最快的一个算法,他的时间复杂度是nlogn,最坏的时候是n^2,基本思想是快速排序,但是被封装的时候进行了许多优化,所以基本达不到n^2的速度

  那么我们如何使用好这个东西是一个非常关键的问题,因为我们打比赛的时候,可以说是不可能写出比sort还快的排序算法

  用好sort我们需要学好如何重构(operator)和写cmp函数

  其实,鄙人觉得,cmp和operator都是一个事,都是在排序的关键值上做文章,operator的用法,我也写过一篇bk来简单介绍了他的用法,在这里就不做过多介绍,cmp的用法和operator换汤不换药,operator用好了,cmp也就会了,下面我总结两个小的知识点,用处不大,当做扩展知识面,日后可能有用

  1.friend,对于系统学过C++的同学可能很熟悉,但对于软外的同学,可能比较陌生,这个东西加在类和函数前面,将其变成友元函数或者友元类,如果你的operator写在了结构体里面,那么不加friend,外界是无法访问的,当然你也可以写一个全局的operator,但是坏处长着脑子的都知道,你写成全局的话,关键值从始至终就只是那一个了,不太灵活就,自己体会吧

  2.排序经常给object排序,有的时候用到printf以%s的形式输出string类型的value,比如 string value,我们不能直接写printf("%s\n",value),我们应该写printf("%s\n",value.c_str());这是因为C++是C的发展,需要兼容,C里面是不包括string的,所以在C++中的string类中,写了c_str()这个函数,用来返回C的指针所指向的字符串,大体这么个意思,方便记忆,这里也说一下我怎么记这个函数名字的,因为你要兼容C语言,你打的是C++,所以你是不是方法得有个c啊,是不是说你是让c兼容的啊,是不是我们是对str进行操作,所以c_str()这个名不就出来了吗,我真是个小天才

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值