Чтобы вытащить элементы из вектора в приоритетном порядке, кроме как сортировать вектор, можно еще превратить его в кучу. Вот такая простенькая программа:
#include <iostream>
#include <vector>
#include <algorithm>
#define WHOLE(x) std::begin(x), std::end(x)
int main()
{
constexpr size_t sz = 20;
std::vector<int> v(sz);
for (int i = 0; i < sz; ++i) {
v[i] = rand() % 1000;
}
std::make_heap(WHOLE(v));
for (int i = 0; i < sz; ++i) {
std::cout << v[0] << ' ';
std::pop_heap(WHOLE(v));
v.pop_back();
}
return 0;
}
Как то же самое проделать для массива?
#define WHOLE(x, sz) (x), (x + sz)
int main() {
constexpr size_t sz = 20;
int v[sz]{};
for (int i = 0; i < sz; ++i) {
v[i] = rand() % 1000;
}
std::make_heap(WHOLE(v, sz));
for (int i = 0; i < sz; ++i) {
std::cout << v[0] << ' ';
std::pop_heap(WHOLE(v, sz - i));
}
return 0;
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости