Как выводить элементы массива в приоритетном порядке , создавая кучу из массива

76
09 сентября 2021, 04:20

Чтобы вытащить элементы из вектора в приоритетном порядке, кроме как сортировать вектор, можно еще превратить его в кучу. Вот такая простенькая программа:

#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;
}

Как то же самое проделать для массива?

Answer 1
#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;
}
READ ALSO
Как быстро переименовать переменные в VS C++

Как быстро переименовать переменные в VS C++

Допустим, у меня есть много переменных с названием "a", я хочу их все переименовать в "b" во время редактирования кодаКак можно это быстро сделать?

166
Bootstrap 4 выбор табов Select

Bootstrap 4 выбор табов Select

Доброе время суток господа, вопрос вроде и простой а вроде и сложный, необходимо выбирать стандартные bootstrap 4 табы выпадающим списком select,...

314
Несколько Select на странице

Несколько Select на странице

имеется несколько select обернутых в div на странице, необходимо чтобы при выборе внутри рядом стоящего div отображалась информация

174