Список в стандартной библиотеке шаблонов C (STL). Я создал следующую программу и не знаю, как создать функцию для печати списка

#c #list #stl

#c #Список #stl

Вопрос:

     #include <iostream> 
    #include <list> 
    #include <iterator> 
    using namespace std;
    class Profesor
    {
        public:
        string nume, departament;
        int grad, vechime;
    
        Profesor(string n, string d, int g, int v);
    };

    
    Profesor::Profesor(string n, string d, int g, int v) {
        nume = n;
        departament = d;
        grad = g;
        vechime = v;
    }
    int main()
    {
        list <Profesor*> profi;
        Profesor* p;
        int opt;
        string nume, departament;
        int grad, vechime;
        do {

            cout << "1.Adaugare" << endl;
            cout << "Dati optiunea! " << endl;
            cin >> opt;
            switch (opt)
            {
            case 1:
                cout << "Nume:";
                cin >> nume;
                cout << "Departament:";
                cin >> departament;
                cout << "Grad:";
                cin >> grad;
                cout << "Vechime";
                cin >> vechime;
                p = new Profesor(nume, departament, grad, vechime);
                profi.push_front(p);
            default:
                break;
            }
        } while (opt);
        return 0;
    }
 

Вариант 1 — добавить новый элемент в список
Это конструктор класса
Итак, мне нужна функция для отображения всего списка
ajgnsjdgn afkajkf nskjfnakfakfnaf afnakfnasdnlang akfnafdakfrnaasf asdfkasfna
ad akjdgnakjsgsa askfnaksd asgnaskdng asdgjnsadgag

Комментарии:

1. С какой конкретной проблемой вы столкнулись? Вы хотите вывести каждый элемент в списке? Если это так, выполните итерацию по списку (я рекомендую цикл for на основе диапазона, например for (const auto* p : profi) ), затем выведите нужную информацию (я рекомендую добавить функцию в класс Profesor, которая cout определяет каждую переменную).

Ответ №1:

Добавьте функцию в Profesor для вывода ее текущих переменных:

 void output() const {
    cout << " * nume:        " << nume        << endl;
    cout << " * departament: " << departament << endl;
    cout << " * grad:        " << grad        << endl;
    cout << " * vechime:     " << vechime     << endl;
}
 

Создайте функцию, которая выполняет итерацию по списку и вызывает эту функцию.
Вот пример, в котором используется цикл for на основе диапазона:

 void outputProfesors(const list<Profesor*>amp; profesors) {
    for (const autoamp; profesor : profesors) {
        profesor->output();
    }
}
 

Вызов outputProfesors() .

Комментарии:

1. Большое вам спасибо. Я не знал, как перебирать список.

2. Обратите внимание, что цикл for, основанный на диапазоне, является коротким для for (auto it = profesors.begin(); it != profesors.end(); it) , или for (list<Profesor*>::iterator it = profesors.begin(); it != profesors.end(); it)