C++ 結構體初始化

  結構體是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;
    }
} 
相關文章
相關標籤/搜索