C++

priority queue

Vector Review

int main() {	
	vector<int> v;
    cout << "放入: 10, 50, 30" << endl;
    v.push_back(10);
    v.push_back(50);
    v.push_back(30);
    cout << "方法A印出: ";
    for (int i = 0; i < v.size(); i++) {
        cout << v[i] << " ";
    }
    cout << endl;
    cout << "方法B印出: ";
    for (int x : v) {
        cout << x << " ";
    }
    cout << endl;

    return 0;
}

Vector Review

v.size();
v.empty();
v.resize(n);
v.push_back(val);
v.pop_back();
v[i];
v.clear();
sort(v.begin(), v.end());
reverse(v.begin(), v.end());
count(v.begin(), v.end(), 5);
lower_bound(v.begin(), v.end(), 5);
upper_bound(v.begin(), v.end(), 5);

Priority Queue

#include <iostream>
#include <queue> // 1. 記得引入這個
using namespace std;

int main() {
    // 2. 宣告一個優先佇列 (預設是:數字大的先出來)
    priority_queue<int> pq;

    // 3. 隨便亂序丟數字進去
    cout << "依序丟入: 30, 10, 50" << endl;
    pq.push(30);
    pq.push(10);
    pq.push(50); 

    cout << "現在最大的是: " << pq.top() << endl; // 印出 50

    // 5. 把最大踢掉 (Pop)
    pq.pop(); // 50 離開了,現在剩下 30 和 10
    
    cout << "踢掉最大後,新的最大是: " << pq.top() << endl; // 印出 30

    return 0;
}

Priority Queue

數字小的先出來

//method 1

priority_queue<int, vector<int>, greater<int>> pq;

//method 2
// 小撇步範例:想要小的先出來
pq.push(10 * -1);
pq.push(50 * -1);

// 拿出來時記得變回來
int val = pq.top() * -1; // 拿到 10
Made with Slides.com