2012-03-03 72 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