Поскольку вы сказали, что сортировка по диапазону, вы можете использовать partial_sort
вместо сортировки всей коллекции.
Если мы не хотим нарушать существующую коллекцию и хотим иметь новую коллекцию с отсортированными данными и бездубликаты, то std::set
дает нам прямое решение.
#include <vector>
#include <set>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
int arr[] = { 1, 3, 4, 1, 6, 7, 9, 6 , 3, 4, 9 };
vector<int> ints ( arr, end(arr));
const int ulimit = 5;
auto last = ints.begin();
advance(last, ulimit);
set<int> sortedset;
sortedset.insert(ints.begin() , last);
for_each(sortedset.begin(), sortedset.end(), [](int x) { cout << x << "\n"; });
}