1 空隙グラフ:: InputListGene(BOOL TOG、INT nbNodes、はifstream&F){ 2 ストリング *ライン= 新しい 文字列[nbNodes]。 3 int型のカウント= 0 ; 4 一方(!{f.eof()) 5 のgetline(F、行[カウント]、' ; ' ); 6 数++ ; 7 } 8 用(INT iは= 0 ; I <カウント、Iを++ ){ 9 頂点* V = 新しいです頂点(I); // 初期化するために 10 V->色= 0。// O黒&1ホワイト 11 listVertex.push_back(V)。 12 } 13 INT P = 0 。 14 正規表現pattern_node(" \\ D +、\\ D + " ); 15 のために(INTは iは= 0 ; I <数; I ++ ){ 16 17 のために(sregex_iteratorそれ(ライン[I] .begin()、ライン[I] .END()、pattern_node)、END;!それ= END;それ++ ){ 18 のchar * CSTR = 新たな チャー【。IT-> STR()サイズ()+ 1 ]。 19 チャー DELIM [] = " "。// 数字のスプリッタ20 のint DEST、重量。 21 strcpyの(CSTR、IT-> STR()c_str())。// チャーに変換文字列22 DEST = ATOI(はstrtok(CSTR、DELIM))。 23 重量= ATOI(はstrtok(NULL、DELIM))。 24 頂点* V = 新しい頂点(DEST)。// 初期化するために25 V->色= 0。// O黒&1ホワイト26 listVertex.push_back(V); 27 coutの<< DEST << " " <<重量<< " " ; 28 エッジ* E = 新しいエッジ(P、listVertex [i]は、listVertex [DEST]、重量); 29 } 30 COUT << ENDL。 31 } 32 } 33 // ファイルの"Graph.cpp"
これは、有向グラフのTXTファイル情報から読み取り、データ構造を生成するために、Graph.cppファイル関数です。
11とこの問題のスコープで宣言されていなかったに走った、非常にスタートライン26と同様に、書き込みの#include「Graph.h」冒頭に、ファイルのメンバーが公共のベクトルを持っているGraph.hのグラフクラスの前に当惑しました<あなたはクラスのメンバを含める訪問することができますという考えを持つ頂点*> listVertex。ここで私は愚かなミスを犯しました。あなたは、ドメイン名解決オペレータの操作で関数を定義するとき、クラスのメンバ関数として関数を宣言し、への最初の必要性::機能の前に関数内でクラスのメンバにアクセスするためです。
さらに、この機能はまた、採取したTXTファイルやアプローチから指定されたデジタル形式を読み取ることが可能となります。
次のようにTXTファイルを想定します。
第三の行の後、図のテーブルに隣接する構造です。
まず、サイドインターセプトノード番号の正規表現は、同じ行の複数のマッチに正規表現イテレータここで使用されます。その後はstrtok関数によって、コンマ左の値の両側に得られます。