使用STL对部分向量排序

问题描述 投票:0回答:2

我有一个指向数组的指针向量,vector<float*> points。数组的长度为d。我想将此向量points[i]位置排序为points[j]位置(包含或排除,无关紧要,因为我们总是可以相应地将其调整为1)。此外,我希望根据第0 <= x < d个条目对其进行排序。我不在乎如何解决平局(也就是说,没有打破平局或对第(x+1)%d个条目进行排序-没关系)。 C ++中有为此功能吗?我知道我很可能可以通过为此定义自己的比较器函数来完成x-th轴操作,但是主要是对向量的一部分进行排序。我没有找到任何与之相关的信息(partial_sort()接近,但不完全是我想要的),因此对于是否曾有人问过这个问题,我感到抱歉。任何帮助都会很棒。谢谢...

c++ stl
2个回答
3
投票
std::sort

现在输出将是:

#include <iostream>
#include <algorithm>
#include <vector>

int main() {
    std::vector<int> v{ 2, 4, 1, 6, 5, 7, 2 };

    std::sort(v.begin(), std::min(v.begin() + 3, v.end()));

    for (auto const i : v) {
        std::cout << i << " ";
    }

    return 0;
}

因此仅对前三个元素进行排序。

[请仔细看一下1 2 4 6 5 7 2 
。这样可以保护您,使结尾不超过std::min(v.begin() + 3, v.end())

0
投票
您只能像这样对容器的范围进行排序:

v.end()

© www.soinside.com 2019 - 2024. All rights reserved.