对于List Iterators,我可以访问不同的元素
但我每个对象只能访问一件事 例如
class student{
private :
string firstname;
string lastname;
// some other variables //etc...
public:
// some functions here ....
};
列表中的我可以使用List Iterators访问并打印所有名字 但是我该怎么打印 名字后面的名字后跟姓氏?
答案 0 :(得分:3)
这就是我认为你在谈论的内容:如果没有,请提供更多细节。
我认为你有std::list
student
,就像
std::list<student> studentList;
//add student instances to list
然后你正在迭代它,就像这样:
for(std::list<student>::it = studentList.begin(); it != studentList.end(); ++it)
{
std::cout << it->getFirstName() << std::endl;
}
如果是这种情况,只需为it->getLastName()
添加一点:
for(std::list<student>::it = studentList.begin(); it != studentList.end(); ++it)
{
std::cout << it->getFirstName() << " " << it->getSecondName() << std::endl;
}
答案 1 :(得分:2)
您可以以同样的方式打印lastname
,打印firstname
。如果您在类的成员函数中打印它,那么您可以这样做:
std::cout <<firstname <<" " <<lastname << std::endl;
如果您已经编写了一些get
函数,并且您从该类的非成员函数打印它,那么您可以这样做:
student s;
//...
std::cout <<s.getFirstname() <<" " <<s.getLastname() << std::endl;
您还可以将operator<<
朋友功能添加到班级中,如下:
class student{
private :
string firstname;
string lastname;
// some other variables //etc...
public:
// some functions here ....
friend std::ostream& operator<<(std::ostream & out, const student &s)
{
return out << s.firstname <<" " <<s.lastname;
}
};
然后这样做:
std::list<student> students;
//...
for(std::list<student>::iterator it = students.begin(); it != students.end(); it++ )
{
std::cout << *it << std::endl;
}
你甚至可以这样做:
student s;
//...
std::cout << s << std::endl; //it prints firstname and lastname by calling operator<<
答案 2 :(得分:0)
简单! cout 后面跟姓氏的第一个名字。
cout << lIter->firstName << " " << lIter->lastName << endl ;
// firstName, lastName are private. So, intead write getters and call those on list iterator.
或者我是否理解错误的问题?