結構體是C++經常使用的數據結構,其初始化能夠以下:c++
#include<bits/stdc++.h> using namespace std; struct Node{ int M, V; Node(int a, int b){ M = a; V = b; } }; int main(){ Node n1(1, 65), n2(5, 23), n3(2, 99); cout << n1.M << ' ' << n1.V << endl; cout << n2.M << ' ' << n2.V << endl; cout << n3.M << ' ' << n3.V << endl; }
此外,結構體還能夠重載操做符,如:數據結構
#include<bits/stdc++.h> using namespace std; struct Node{ int M, V; Node(int a, int b){ M = a; V = b; } friend bool operator < (const Node n1, const Node n2){ return n1.V < n2.V; } friend bool operator > (const Node n1, const Node n2){ return n1.V > n2.V; } friend ostream &operator << (ostream &os, const Node n){ os << n.M << ' ' << n.V; return os; } }; int main(){ Node n1(1, 65), n2(5, 23), n3(2, 99); if(n1 < n2) cout << n1 << endl; else cout << n2 << endl; }
天然,結構體也能夠配合STL一塊兒使用,如配合優先隊列使用,注意在只用有優先隊列是必須重載小於號,只重載大於號是不能夠的:spa
#include<bits/stdc++.h> using namespace std; struct Node{ int M, V; Node(int a, int b){ M = a; V = b; } friend bool operator < (const Node n1, const Node n2){ return n1.V < n2.V; } friend bool operator > (const Node n1, const Node n2){ return n1.V > n2.V; } friend ostream &operator << (ostream &os, const Node n){ os << n.M << ' ' << n.V; return os; } }; int main(){ Node n1(1, 65), n2(5, 23), n3(2, 99); priority_queue<Node> pq; pq.push(n1), pq.push(n2), pq.push(n3); while(!pq.empty()){ Node n = pq.top(); pq.pop(); cout << n << endl; } }