我无法将元素添加到列表-C ++

时间:2019-12-16 06:52:49

标签: c++ list

   void Student::addStudent()
    {
     int studentAdd;
     cout<<"How many student do you want to add?"<<endl;
     cin>>studentAdd;
     list<string>::iterator it;
     cout<<"Enter the name of student"<<endl;
     for(int i=0;i<studentAdd;++i)
     {
         cin>>studentName;
         for(it=studentList.begin();it!=studentList.end();++it)
         {
            studentList.insert(it,studentName);
         }
     }
 }
我试图在列表中添加字符串元素,但是当我尝试使用其他功能显示时,我看不到元素。

    void Student::displayAllStudents() 
{
    list<string>::iterator display;
    cout<<"Students:\n"<<endl;
    for(display = studentList.begin();display!= studentList.end();++display)
    {
        cout<<*display<<endl;
    }
}

能帮我吗?

2 个答案:

答案 0 :(得分:3)

起初,您的列表为空,因此Begin和End迭代器相等,因此该代码将不会执行:

for(it=studentList.begin();it!=studentList.end();++it)
{
    studentList.insert(it,studentName);
}

如果要在列表末尾添加元素,只需使用push_back函数。不需要第二个循环,因此您的代码可以像这样:

for(int i = 0; i < studentAdd; ++i)
{
   cin>>studentName;
   studentList.push_back(studentName);
}

答案 1 :(得分:1)

如果列表中没有元素,则无法使用迭代器循环。这是错误:

for(it=studentList.begin();it!=studentList.end();++it)
{
    studentList.insert(it,studentName);
}

begin()和end()在开始处指向同一元素。

您可以使用push_bask()添加元素。