C ++ List Iterators访问同一对象中的不同元素

时间:2011-08-06 23:43:09

标签: c++ class list object

对于List Iterators,我可以访问不同的元素

但我每个对象只能访问一件事  例如

class student{
private : 
string firstname;
string lastname;
// some other variables //etc...  

public: 
// some functions here ....
};
列表中的

我可以使用List Iterators访问并打印所有名字 但是我该怎么打印 名字后面的名字后跟姓氏?

3 个答案:

答案 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.

或者我是否理解错误的问题?