Здравствуйте, so5team, Вы писали:
S>Здравствуйте, T4r4sB, Вы писали:
S>>>Но это не так. И авторы STL не единственные люди, которые считают, что размеры и индексы должны быть беззнаковыми.
TB>>Вообще-то они уже признали, что это была ошибка.
S>Если под "они" подразумеваются авторы STL, то где об этом можно прочитать?
S>А вообще речь шла о том, что кроме авторов STL есть разработчики, которые находят логичным использование беззнаковых чисел для размеров и индексов. Т.е. авторы STL вовсе не были "белыми воронами".
За этим "логичным" решением стоит целый лес граблей, ладно когда его не видит обычный разработчик, но когда "близорукость" у создателей стандарт пиши пропало.
Вот один из примеров. Допустим нужно перебрать все элементы кроме первого и последнего:
for (int i = 1; i < v.signed_size() - 1; i++)
{
v[i];
}
for (size_t i = 1; i < v.unsigned_size() - 1; i++)
{
v[i];
}
Со знаковым индексом пример всегда будет корректно работать, с беззнаковым на пустой коллекции ошибка времени выполнения.