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;
}
}
能帮我吗?
答案 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()添加元素。