Russian Qt Forum

Программирование => С/C++ => Тема начата: juvf от Мая 12, 2010, 09:49



Название: Что возвращает std::list::front()?
Отправлено: juvf от Мая 12, 2010, 09:49
Не могу найти нормальный справочник по С++. на www.cplusplus.com описание list и его методов
Цитировать
      reference front ( );
const_reference front ( ) const;

Access first element
Returns a reference to the first element in the list container.
А что вернет метод front() у list, если список пуст?


Название: Re: Что возвращает std::list::front()?
Отправлено: SimpleSunny от Мая 12, 2010, 10:13
Стандарт на этот счет ничего не говорит, поэтому реализация может отличаться от компилятора к компилятору.

Для gcc 3.4.2

Код
C++ (Qt)
     // element access
     /**
      *  Returns a read/write reference to the data at the first
      *  element of the %list.
      */

     reference
     front()
     { return *begin(); }

Т. е. вернуться может все что угодно.


Название: Re: Что возвращает std::list::front()?
Отправлено: juvf от Мая 12, 2010, 10:37
Ну понятно. перед этим empty() нужен.
Цитировать
Т. е. вернуться может все что угодно.
ну это лучше, чем неадекватное поведении. В Assistant-e хоть про такой случай словечко замолвили, хоть что-то понятно
Код:
T & QList::front ()
This function is provided for STL compatibility. It is equivalent to first(). The list must not be empty. If the list can be empty, call isEmpty() before calling this function.


Название: Re: Что возвращает std::list::front()?
Отправлено: alexman от Мая 12, 2010, 14:14
Ну понятно. перед этим empty() нужен.
Цитировать
Т. е. вернуться может все что угодно.
ну это лучше, чем неадекватное поведении. В Assistant-e хоть про такой случай словечко замолвили, хоть что-то понятно
Код:
T & QList::front ()
This function is provided for STL compatibility. It is equivalent to first(). The list must not be empty. If the list can be empty, call isEmpty() before calling this function.

И так понятно, что если список может быть пуст, то сначала нужно проверить на пустоту!