2012-03-03 152 views
-2

graph.h「對象」 和 「對象*」

struct Edge { 
    int from; 
    int to; 
    int elabel; 
    unsigned int id; 
    Edge(): from(0), to(0), elabel(0), id(0) {}; 
}; 

是什麼vector<Edge>vector<Edge*>之間的區別的區別?我知道vector<Edge>是一個存儲Edge對象的數組,但Edge*對象是什麼?

回答

2

Edge*類型是指向邊緣的指針。所以一個vector<Edge*>是一個存儲指向邊的向量。

載體本身不存儲的對象,只指向這些對象。這尤其意味着當指針的生命週期結束時,指向的對象不會自動刪除。

+1

所以這意味着我們在其他地方生成Edge對象,並且我們存儲指向這個對象的指針? – LoveTW 2012-03-03 08:29:56

+1

是的,你必須非常小心這些對象的生命週期。 – Mat 2012-03-03 08:32:43

+0

感謝您的幫助:) – LoveTW 2012-03-03 08:35:00