Первая - это функция для определения, является ли список пустым. В двусвязном списке, если у вас есть хотя бы один элемент, указатели head
и tail
(которые указывают соответственно на начало и конец списка) должны указывать на действительный элемент. Следовательно, вы можете проверить, является ли список пустым, проверив, не указывают ли оба этих указателя на допустимый элемент (т. Е. null
). Это то, что делает выражение !head || !tail
- проверяет, является ли какой-либо указатель null
, и если так, то список пуст.
operator bool()
- это оператор преобразования. По сути, это означает, что всякий раз, когда список приводится к bool
, эта функция вызывается, а результат используется в качестве значения bool
. Функция возвращает информацию о том, является ли список не пустым, поэтому выражение типа bool result = myList;
сделает result
значением true
, если список не пуст.