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

函数原型是这样的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:
zebra
deer
fish
snake
bat
cat
bird
turtle
horse
cow

contents of vectors:
bat
bird
cat
cow
deer
zebra
snake
turtle
horse
fish

慕妹3242003
浏览 130回答 2
2回答

收到一只叮咚

partial_sort() 部分排序,不是全部排序。因为 strVector.begin() + 5排出前5个,其它的放到后面不管

慕雪6442864

这和partial_sort的实现有关系。他只保证参数1和参数2之间的内容是排序的,而其它的部分的顺序,是不排序的,至于为什么是这样,你可以参考其实现。
打开App,查看更多内容
随时随地看视频慕课网APP