zoukankan      html  css  js  c++  java
  • c++ std 最小堆的使用 (用于实现top100之类的功能)

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

    using namespace std;

    void PrinfVectorInt(vector<int> &vec)
    {
    for(auto iter = vec.begin(); iter != vec.end(); ++iter)
    {
    cout << *iter << ", ";
    }
    cout << endl;
    }

    bool Greater(int & data_left, int & data_right)
    {
    return data_left >= data_right;
    }

    int main ()
    {
    vector<int> vecMinHeap = {11, 54, 32, 45, 65, 76, 89, 4, 45, 13,25, 2, };

    //建堆
    make_heap(vecMinHeap.begin(), vecMinHeap.end(), Greater);
    PrinfVectorInt(vecMinHeap);
    if(30 > vecMinHeap.front())
    {
    pop_heap(vecMinHeap.begin(), vecMinHeap.end(), Greater);
    vecMinHeap.back() = 30;
    push_heap(vecMinHeap.begin(), vecMinHeap.end(), Greater);
    }

    PrinfVectorInt(vecMinHeap);
    if(4 > vecMinHeap.front())
    {
    pop_heap(vecMinHeap.begin(), vecMinHeap.end(), Greater);
    vecMinHeap.back() = 4;
    push_heap(vecMinHeap.begin(), vecMinHeap.end(), Greater);
    }

    PrinfVectorInt(vecMinHeap);

    if(132 > vecMinHeap.front())
    {

    pop_heap(vecMinHeap.begin(), vecMinHeap.end(), Greater);
    vecMinHeap.back() = 132;
    push_heap(vecMinHeap.begin(), vecMinHeap.end(), Greater);
    }
    PrinfVectorInt(vecMinHeap);
    return 1;
    }

    //使用了c++11 的特性,所以需要使用c++11的库编译

    g++ --std=c++11 -o min_head min_heap.cpp

  • 相关阅读:
    win7-64位,vs32位,odbc 连接oracle问题总结
    vscode 格式化代码
    vue 自动切换导航图
    Unexpected console statement
    css flex 布局之---骰子
    vue百度地图在IE11下空白
    css使用font-face
    centos7计划任务
    MySQL(Mariadb)主从同步基础
    Ubuntu(16.04) 常见问题
  • 原文地址:https://www.cnblogs.com/barfoo/p/9009033.html
Copyright © 2011-2022 走看看