为了账号安全,请及时绑定邮箱和手机立即绑定

我不明白的是,前5个是排序好的,那么剩下的元素的放置顺序是怎么样的呢?为什么是这个顺序呢?

我不明白的是,前5个是排序好的,那么剩下的元素的放置顺序是怎么样的呢?为什么是这个顺序呢?

C++
慕妹3242003 2023-02-11 18:14:43
函数原型是这样的partial_sort(first,middle,last).C++编程宝典上是这样解释的:对迭代器first和last所指定范围中的元素进行偏序排序.经过排序的元素放到序列的前面部分,其余元素放到迭代器middle和last指定的范围内.书上并且提供了一个例子,#include <iostream>#include <vector>#include <algorithm>#include <string>////////////////////////////////////////// The function to be called by// for_each().////////////////////////////////////////void show_val(string val){std::cout << val << std::endl;}////////////////////////////////////////// The main() function.////////////////////////////////////////int main(){// Create the vector object.std::vector<string> strVector;// Populate the vector with values.strVector.push_back("Zebra");strVector.push_back("Deer");strVector.push_back("Fish");strVector.push_back("Snake");strVector.push_back("Bat");strVector.push_back("Cat");strVector.push_back("Bird");strVector.push_back("Turtle");strVector.push_back("Horse");strVector.push_back("Cow");// Display the contents of the vector.std::cout << "Contents of vector: " << std::endl;for_each(strVector.begin(), strVector.end(), show_val);std::cout << std::endl;// Sort the vector.partial_sort(strVector.begin(),strVector.begin() + 5, strVector.end());// Display the contents of the new vector.std::cout << "Contents of vector: " << std::endl;for_each(strVector.begin(), strVector.end(), show_val);return 0;}运行结果是这样的:contents of vector:zebradeerfishsnakebatcatbirdturtlehorsecowcontents of vectors:batbirdcatcowdeerzebrasnaketurtlehorsefish
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超5个赞

partial_sort() 部分排序,不是全部排序。

因为 strVector.begin() + 5

排出前5个,其它的放到后面不管

查看完整回答
反对 回复 2023-02-15
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

这和partial_sort的实现有关系。
他只保证参数1和参数2之间的内容是排序的,而其它的部分的顺序,是不排序的,至于为什么是这样,你可以参考其实现。

查看完整回答
反对 回复 2023-02-15
  • 2 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号