Re[4]: Оцените решение задачи
От: PM  
Дата: 15.10.14 15:30
Оценка: -1
Здравствуйте, slava_phirsov, Вы писали:

O>>не принципиально


_> Вообще-то такое должно на автомате писаться. Ну я так думаю

+1

O>>Индексы вон тоже бы unsigned не помешало сделать


_> Основоположники, ЕМНИП, учили использовать unsigned там и только там, где требуются операции с битами.

-1

емнип это авторы Java оправдывались почему у них нет беззнаковых целых. Последние удобно использовать в качестве индексов, т.к. для проверки индекса в массиве требуется одно сравнение вместо двух:
bool is_valid_index(int i, int size)
{
    return i >= 0 && i < size;
}

bool is_valid_index(unsigned i, unsigned size)
{
   return i < size;
}


А учитывая, что в стандартной библиотеке для индексов и количества элементов в контейнере используется беззнаковый size_t (с которым кстати в теории можно адресовать в 2 раза больше элементов чем с int), то с is_valid_index(int, int) получим на ровном месте предупреждение компилятора о преобразовании unsigned в int. Которое придется душить явным преобразованием к int

Задолбали такие функции:
void process_string(char const* str, int len);

// приходится их использовать так:
std::string str = "fgfg";
process_string(str.data(), static_cast<int>(str.size()));



И это блин в 21-м веке в С++ коде: https://github.com/v8/v8/blob/master/include/v8.h#L1986
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.