c++ sort函数参数
墨初 知识笔记 131阅读
c++ sort ()排序函数是什么?
答:C++ sort ()排序函数 1 容器支持的迭代器类型必须为随机访问迭代器。这意味着,sort () 只对 array、vector、deque 这 3 个容器提供支持。 2 如果对容器中指定区域的元素做默认升序排序,则元素类型必须支持 < 小于运算符;同样,如果选用标准库提供的其它排序规则,元素类型也必须支持该规则底层实现所用的比较运算符; 3 sort () 函数在实现排序时,需要交换容器中元素的存储位置。这种情况下,如果容器中存储的是自定义的类对象,则该类的内部必须提供移动构造函数和移动赋值运算符。
如何使用 sort () 函数?
答:事实上, C++ 早已经给我们封装了一个极为便利的算法 sort (),我们仅需要引入头文件< algorithm>即可使用。 .语法描述 sort () 函数 中需要 三个参数 : sort (begin,end,cmp),其中: begin为指向待排序的数组的第一个元素的指针 end为指向待排序的数组的最后一个元素的下一位置的指针 cmp为可选 参数 ,作为我们排序的准则。
sort 的 第三个参数 可以用函数 指针吗?
答:sort 的 第三个参数 ,一直是用仿 函数 ,没有想到用 函数 指针也可以! sort 的 第三个参数 可以用 函数 指针也可以用仿 函数 。 用 函数 指针如下:bool str_cmp (const
容器可以用sort函数吗?
答:不是所有的容器直接用sort函数的,有些容器自带有sort函数,不能使用sort (name.begin (), name.end (), comp),只要用name.sort (comp)即可,比如list容器。 上面介绍的一直是sort函数在类外的使用方法。 当sort函数在类内使用,并且定义comp函数也是类成员函数时,必须要在comp函数前加static,因为sort需要传入的参数是一个普通函数指针,而不是成员函数指针,所以需要在类成员定义前加static。 如下 其实这并不是sort函数规定的,而是所有的的普通类成员函数,都不能以函数指针的方式作为其他函数的入口参数,因为普通成员函数在编译阶段,会自动添加了入口参数,这样这个函数指针的模板其实就改变了,比如举个例子: