使用节点值搜索列表中的节点

时间:2015-11-24 21:59:17

标签: c++ list iterator nodes

我很难对此进行编码(甚至弄清楚如何对此进行编码)。我有一个节点列表。每个节点都包含多个值,但我唯一关心的是字符串。

当我在列表中添加节点时,我需要验证我创建的节点是否已经存在。如果确实存在,我需要访问它并修改其中的内容。到目前为止,这是我的代码:

int _tmain(int argc, _TCHAR* argv[])
{

    list<Noeud*> * liste = new list<Noeud*>;
    const string fichierDonnees = "Test01.txt";  


    ifstream fichier;
    fichier.open(fichierDonnees);
    if (!fichier.is_open()) {
        cerr << ConvertirAccents("ERROR OPENING FILE ") << fichierDonnees << endl;

        return -1;
    }else{

    std::ifstream file(fichierDonnees);
    std::string str; 
    int counter=0;
    while (std::getline(file, str))
    {

        Noeud * temp = new Noeud(str);

    //verify if liste has the node temp;

    }
}

fichier.close();


    _getch(); 
    return 0;
}

谢谢!

1 个答案:

答案 0 :(得分:0)

方法beginend不会返回列表中的数据,它们会将迭代器返回到列表中。在迭代器上使用*->运算符将允许您访问其中的数据。如果您有std::list<Noeud*>,则迭代器包含Noeud*

auto itera = liste.begin(); //itera is std::list<Noeud*>::iterator
*itera; //evaluates to Noeud*
itera->...; //Won't work, pointers don't have members.
(*itera)->...; //Gets pointer from iterator, gets member from pointed to object.

但是,您可能不需要指针列表。只需制作std::list<Noeud>通常有效。它省去了首先必须取消引用迭代器的麻烦。