2014-12-21 4 views
0

Am совершенно новый здесь. Необходимо вывести значение из сложного контейнера! Классы приведены ниже.выходной вектор списков указатель класс

class CourseClass 
{ 
private: 

    Professor* _professor; // Profesor who teaches 

    Course* _course; // Course to which class belongs 

    list<StudentsGroup*> _groups; // Student groups who attend class 

    int _numberOfSeats; // Number of seats (students) required in room 

    bool _requiresLab; // Initicates wheather class requires computers 

    int _duration; // Duration of class in hours 

public: 

    // Initializes class object 
    CourseClass(Professor* professor, Course* course, const list<StudentsGroup*>& groups, 
     bool requiresLab, int duration); 
... 
} 

class Professor 
{ 

private: 

    int _id; // Professor's ID 

    string _name; //Professor Name 

    list<CourseClass*> _courseClasses; // List of classes that professor teaches 

public: 
    // Initializes professor data 
    Professor(int id, const string& name); 
... 
} 

class Course 
{ 
private: 

    int _id; // Course ID 

    string _name; // Course name 

public: 

    // Initializes course 
    Course(int id, const string& name); 
... 
} 

class StudentsGroup 
{ 
private: 

    int _id; // Student group ID 

    string _name; // Name of student group 

    int _numberOfStudents; // Number of students in group 

    list<CourseClass*> _courseClasses; // List of classes that group attends 

public: 

    // Initializes student group data 
    StudentsGroup(int id, const string& name, int numberOfStudents); 

... 
} 

Вектор ниже - это то, что я хочу вывести, как бы я конструировал цикл?

vector < list < CourseClass* > > _slots; 
+3

Почему _groups содержит указатель на класс, а не ценность? На самом деле, почему это верно для всех этих переменных-членов? – IdeaHat

+0

... не уверен, что я следую. Значения позже берутся из файла config.dat и сохраняются в контейнере, угадывая, что указатель используется для обозначения другого набора значений. –

ответ

2

в C++ 11:

for(const auto& course_list : _slots) 
{ 
    for(CourseClass* p: course_list) 
    { 
    do_something_with(*p); 
    // or p->do_something(); 
    } 
} 

в C++ 03 это более утомительно:

typedef list<CourseClass*> ClassList; 
typedef vector<ClassList> ClassListVector; 

ClassListVector::const_iterator slot = _slots.begin(); 
ClassListVector::const_iterator last_slot = _slots.end(); 
for(; slot != last_slot ; ++slot) 
{ 
    const ClassList& myClassList = *slot; 
    ClassList::const_iterator class = myClassList.begin(); 
    ClassList::const_iterator class_end = myClassList.end(); 
    for(; class != class_end ; ++class) 
    { 
    CourseClass* p = *class; 
    do_something_with(p); 
    } 
} 
+0

Спасибо большое! XD –

Смежные вопросы