zoukankan      html  css  js  c++  java
  • #STL:优先队列数据结构函数的用法 #堆 #优先队列数据结构(堆) #priority_queue 20.10.17

    点这里运行下面的程序

    empty()

    
    // priority_queue::empty
    #include <iostream>       // std::cout
    #include <queue>          // std::priority_queue
    
    int main ()
    {
      std::priority_queue<int> mypq;
      int sum (0);
    
      for (int i=1;i<=10;i++) mypq.push(i);
    
      while (!mypq.empty())
      {
         sum += mypq.top();
         mypq.pop();
      }
    
      std::cout << "total: " << sum << '
    ';
    
      return 0;
    }
    
    
    

    size()

    // priority_queue::size
    #include <iostream>       // std::cout
    #include <queue>          // std::priority_queue
    
    int main ()
    {
      std::priority_queue<int> myints;
      std::cout << "0. size: " << myints.size() << '
    ';
    
      for (int i=0; i<5; i++) myints.push(i);
      std::cout << "1. size: " << myints.size() << '
    ';
    
      myints.pop();
      std::cout << "2. size: " << myints.size() << '
    ';
    
      return 0;
    }
    

    top()

    // priority_queue::top
    #include <iostream>       // std::cout
    #include <queue>          // std::priority_queue
    
    int main ()
    {
      std::priority_queue<int> mypq;
    
      mypq.push(10);
      mypq.push(20);
      mypq.push(15);
    
      std::cout << "mypq.top() is now " << mypq.top() << '
    ';
    
      return 0;
    }
    

    push()

    // priority_queue::push/pop
    #include <iostream>       // std::cout
    #include <queue>          // std::priority_queue
    
    int main ()
    {
      std::priority_queue<int> mypq;
    
      mypq.push(30);
      mypq.push(100);
      mypq.push(25);
      mypq.push(40);
    
      std::cout << "Popping out elements...";
      while (!mypq.empty())
      {
         std::cout << ' ' << mypq.top();
         mypq.pop();
      }
      std::cout << '
    ';
    
      return 0;
    }
    

    pop()

    // priority_queue::push/pop
    #include <iostream>       // std::cout
    #include <queue>          // std::priority_queue
    
    int main ()
    {
      std::priority_queue<int> mypq;
    
      mypq.push(30);
      mypq.push(100);
      mypq.push(25);
      mypq.push(40);
    
      std::cout << "Popping out elements...";
      while (!mypq.empty())
      {
         std::cout << ' ' << mypq.top();
         mypq.pop();
      }
      std::cout << '
    ';
    
      return 0;
    }
    

    以下是 c++11版 才有的

    emplace()直接加入操作

    // priority_queue::emplace
    #include <iostream>       // std::cout
    #include <queue>          // std::priority_queue
    #include <string>         // std::string
    
    int main ()
    {
      std::priority_queue<std::string> mypq;
    
      mypq.emplace("orange");
      mypq.emplace("strawberry");
      mypq.emplace("apple");
      mypq.emplace("pear");
    
      std::cout << "mypq contains:";
      while (!mypq.empty())
      {
         std::cout << ' ' << mypq.top();
         mypq.pop();
      }
      std::cout << '
    ';
    
      return 0;
    }
    

    swap()

    // priority_queue::swap
    #include <iostream>       // std::cout
    #include <queue>          // std::priority_queue
    
    int main ()
    {
      std::priority_queue<int> foo,bar;
      foo.push (15); foo.push(30); foo.push(10);
      bar.push (101); bar.push(202);
    
      foo.swap(bar);
    
      std::cout << "size of foo: " << foo.size() << '
    ';
      std::cout << "size of bar: " << bar.size() << '
    ';
    
      return 0;
    }
    

    小根堆的写法(直接定义时默认是大根堆)

    #include <iostream>  
    #include <queue>    
    using namespace std;
    int main ()
    {
    //	这是大根堆,直接定义就好了
    //  priority_queue< int> mypq;
    //	这是小根堆,里面的东西我也不知道为什么这么写……
        priority_queue< int, vector<int>, greater<int> > mypq;
      mypq.push(10);
      mypq.push(20);
      mypq.push(15);
    
      cout << "mypq.top() is now " << mypq.top() << '
    ';
    
      return 0;
    }
    
  • 相关阅读:
    全局变量、局部变量
    结构体位域
    关键字(static const volatile extern sizeof)
    预处理#
    头文件<time.h>
    头文件<string.h>
    头文件<stdlib.h>
    session 入库
    php中的匿名函数和闭包
    redis 的 RDB 和 AOF 持久化的区别
  • 原文地址:https://www.cnblogs.com/yuanyulin/p/14026740.html
Copyright © 2011-2022 走看看