我很难对此进行编码(甚至弄清楚如何对此进行编码)。我有一个节点列表。每个节点都包含多个值,但我唯一关心的是字符串。
当我在列表中添加节点时,我需要验证我创建的节点是否已经存在。如果确实存在,我需要访问它并修改其中的内容。到目前为止,这是我的代码:
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;
}
谢谢!
答案 0 :(得分:0)
方法begin
和end
不会返回列表中的数据,它们会将迭代器返回到列表中。在迭代器上使用*
或->
运算符将允许您访问其中的数据。如果您有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>
通常有效。它省去了首先必须取消引用迭代器的麻烦。