Re[3]: Проблемы STL-контейнеров
От: Kluev  
Дата: 06.09.06 11:05
Оценка: +1 -1
Здравствуйте, rusted, Вы писали:

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


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


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


Нет. Проблемма именно в беззнаковости stl.
пример:
for(i = 0, j = vec.size()-1; i < j; i++)
{
  // перебираем элементы парами, например для вычисления расстояния м-ду соседними
    vec[i]; vec[i+1];
}


Со знаковыми типами вот такой код будет нормально работать, а с бесзнаковыми i,j при vec.size()==0 будут грабли.

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


Для того чтобы можно было писать по человечески. Если например двигаемся в произвольном направлении и с произвольным шагом, то к индексу прибавляется приращение: i+=d, а приращение вполне может быть и отрицательным.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.