2011-08-06 6 views
0

リストイテレータのために、私はさまざまな要素C++リストイテレータ

にアクセスすることができますが、私は私だけがアクセスできるリストに例えばオブジェクト

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

public: 
// some functions here .... 
}; 

ごとに一つのことにアクセスすることができますし、 List Iterators ですべてのファーストネームを印刷しますが、 ファーストネームをリストの姓で続けて印刷するにはどうすればよいですか?

+2

リストとは何ですか?標準::リスト? – Klaim

+2

そして、あなたはファーストネームの場合と同じように、なぜラストネームのために同じことをすることができませんか? –

答えて

3

これは、私はあなたが話している考えるものです:いない場合は、いくつかの詳細を記入してください。

私は、あなたが

std::list<student> studentList; 
//add student instances to list 

のように、studentstd::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; 
} 
0

シンプル! cout firstnameの後に姓が続きます。

cout << lIter->firstName << " " << lIter->lastName << endl ; 
// firstName, lastName are private. So, intead write getters and call those on list iterator. 

また、間違った質問がありましたか?

+0

ハム私はそれをしたし、何らかの理由であなたのケースの最後の名前であるendlの前に唯一最後のものを覚えておく – ricedragon

2

同じ方法でlastnameを印刷することができます。firstnameを印刷します。

std::cout <<firstname <<" " <<lastname << std::endl; 

そして、あなたは、その後、あなたには、いくつかのget機能を書いた、とあなたはクラスの非メンバ関数からそれを印刷する場合:あなたは、クラスのメンバ関数でそれを印刷した場合は、これを行うことができますこれを行うことができます。

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; 
    } 
}; 

student s; 
//... 
std::cout <<s.getFirstname() <<" " <<s.getLastname() << std::endl; 

またとして、クラスにoperator<<フレンド機能を追加することができます

std::list<student> students; 
//... 

for(std::list<student>::iterator it = students.begin(); it != students.end(); it++) 
{ 
     std::cout << *it << std::endl; 
} 

をあなたもこれを行うことができます:0

は、これを行う

student s; 
//... 
std::cout << s << std::endl; //it prints firstname and lastname by calling operator<< 
関連する問題