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