2013-12-22 27 views
-1

我想在我的鏈接中有一些自定義數據。考慮stLINK是一些結構,它提供了鏈接數據。一種方法是將這種結構的指針放在矩陣中(如int,需要轉換),另一種方法是創建一個鏈接向量,並將每個鏈接項目的索引放入矩陣中。如果有標準方式,請幫助我。謝謝圖形實現,使用鄰接矩陣,鏈接自定義數據

回答

0

據我所知,你需要有每個邊緣的自定義數據,對不對?我使用矢量和地圖來做到這一點。

struct data_t { 
// any data you want to store for an edge 
int a,b,c; 
string name; 
}; 

std::vector< std::map<int, data_t> > adj; 

這樣,檢查邊緣是否存在更快。否則,您可以使用std::vector<data_t>

0

您還沒有描述「自定義數據」和「鏈接」是什麼。我會假設他們是班級。如果某個東西(這裏是「鏈接」)應該同時攜帶多種類型的數據,您應該創建一個類。當然,你可以用C++製作一個對象矩陣,不需要投射到int

  1. 如果你的「自定義數據」能活的「鏈接」做每一個環節都有自己的「自定義數據」的全部時間,最簡單的方法是,將數據添加到類鏈接。

    class Link 
    { 
        customData_t data; 
        // other useful attributes (and methods) 
    }; 
    
  2. 您可以創建你的「自定義數據」的std::vector。它將管理項目的創建和刪除。訪問隨機元素的最快方法是知道它在內存中的位置 - 一個指針。我認爲沒有必要對int進行任何投射。

    std::vector<customData_t> CustomData; 
    
    class Link 
    {  
        customData_t* data; 
        // other useful attributes (and methods) 
    }; 
    

    灌裝data

    Link l; 
    customData_t temp; 
    CustomData.push_back(temp); 
    l.data = &(CustomData.back()); 
    

    (或者你可以在C++ 11使用vector::emplace_back()

    訪問很簡單:*l.data

    這種方式是更好的,如果你想在多個「鏈接」上共享相同的數據,或者在「鏈接」期間應該添加/刪除它們。