Re[3]: size_t
От: Пётр Седов Россия  
Дата: 06.09.06 11:08
Оценка: 1 (1) +2 -1
Здравствуйте, rusted, Вы писали:

R>Здравствуйте, Аноним, Вы писали:


А>>4. STL-контейнеры провоцируют использование size_t. Беззнаковость этого типа влечёт проблемы.


R>проблемы влечет не сама беззнаковость size_t, а непоследовательность в использовании типов. и количество элементов в контейнере и индекс элемента не могут быть отрицательными — вполне логично делать их беззнаковыми. проблемы начинаются, когда в коде для них в одном месте используется знаковые типы, а в другом — беззнаковые.

Логично использовать size_t до тех пор, пока не сядешь в лужу. С Вами, видимо, такого не случалось, а вот со мной случалось. Место жительства size_t — менеджеры памяти, лучше ему оттуда не расползаться по программе.
Создатели Java, наученные горьким опытом C++, вообще практически отказались от беззнаковых типов. uint32 в Java нет. Хотя это слишком радикальное решение: лечение головной боли путём отсечения головы. Но менеджеры памяти на Java не пишут, поэтому там это нормально.

R>зачем в вашем примере GetPos возвращает int? судя по всему только для возможности задать спец значение -1, на мой взгляд в таком случае более правильно использовать явно объявленое значение для беззнакового — как например std::string::npos.

Спросите у Кирпы. Иногда использование барьерных значений (как -1 здесь) позволяет не писать нудных граничных проверок.
Пётр Седов (ушёл с RSDN)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.