私はC ++が初めてで、このポインターなどで頭痛がしました!
リンクされたリストである構造体のリストを反復処理し、構造体のデータを読み取り、そのエントリをポップする必要があります!
これは私の構造体です:
struct node {
map<string,double> candidates;
double pathCost;
string source;
node *next; // the reference to the next node
};
この投稿を読んで、次のようなリストを作成します。
list<node*> nodeKeeper;
次に、最初の値を初期化しました。
node *head;
head= new node;
head->pathCost = 0.0;
head->source="head";
head->next = NULL;
リストと構造体を薄く埋めます:
for(unsigned int i = 0; i < sourceSentence.size(); i++){
node *newNode= new node; //create a temporary node
//DO STUFF HERE
//push currunt node to stack
nodeKeeper.push_back(newNode);
head = newNode;
}
今、構造体のリストがあり、それを繰り返し処理して要素をポップしたい:
for (list<node*>::const_iterator it=nodeKeeper.begin();it!=nodeKeeper.end();it++){
it->pop_front();
}
これは私にこのエラーを与えます:
エラー: '* it.std::_List_const_iterator<_Tp>::operator->()' 内のメンバー 'pop_front' の要求、これはポインター型 'node* const' です (おそらく '->' を使用するつもりでしたか? ) make: *** [main3.o] エラー 1
私のイテレータは、リスト自体ではなく、リスト内を指しているようです!
ここで何が問題なのか教えてもらえますか?!