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

+1

はい、これらのオブジェクトの存続期間については非常に注意する必要があります。 – Mat

+0

あなたの助けをありがとう:) – LoveTW

関連する問題