通过参数对矢量进行排序

时间:2018-04-06 11:27:05

标签: c++ stl

你好,我想做以下事情。 假设我们有一个[1 9 6 8 9 10]的向量,我想按标准排序第一次,第二次按其他标准排序。(例如,如果bool变量为True,则使用第一个标准对向量进行排序,如果它是假的,使用第二个标准对矢量进行排序。 例如,我们按照第一个标准对向量进行排序:升序                                      第二个标准:降序。 输出将是[1 10 6 8 9 9]。 使用第一个标准,然后是第二个标准对向量进行排序很容易,但是使用stl库是否可以这样做? :)

1 个答案:

答案 0 :(得分:1)

std::sort的相关重载是三元的:

template< class RandomIt, class Compare >
void sort( RandomIt first, RandomIt last, Compare comp );

所以你需要通过

之类的东西来调用它
std::sort(vector.begin(), vector.end(), factor? first : second);

(提供firstsecond是匹配类型,因此第三个参数编译。

如果不是,您可以将它们包裹在std::function或其他内容中。)