#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)