list.front()
возвращает ссылку на первый элемент, я думаю, что вы хотите использовать list.empty()
, чтобы обнаружить состояние пустого или полного состояния (в вашем конкретном случае, когда вы один или другой, без серых областей ).
Кроме того, в определенных кругах не одобряется «использование пространства имен std», и вы не включили заголовочный файл для numeric_limits
(хотя это, вероятно, не нужно, если вы просто используете это как «Нажмите любую клавишу для продолжить "метод внутри IDE).
Также нет необходимости проверять, является ли random
единицей, поскольку она всегда будет 1 или 0. Другими словами, бит if
будет выполняться, если он равен 0, а бит else
будет выполняться иначе ( когда это 1).
Исправление всего, что дает вам:
#include <iostream>
#include <list>
#include <limits>
#include <cstdlib>
int main (void) {
int random;
std::list<int> MyList;
for (int i = 10; i > 0; i--) {
random = rand() % 2;
if (random == 0) {
if (MyList.empty()) {
for (int k = 10; k > 0; k--) {
MyList.push_front (k);
}
}
} else {
if (!MyList.empty()) {
for (int j = 10; j > 0; j--) {
MyList.pop_front();
}
}
}
std::cout << random << ", ";
}
std::cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
return 0;
}