Я был очень удивлен, увидев, что std::count
вернулся iterator_traits<InputIterator>::difference_type
, что по очереди относится к long int
на моей платформе.Почему std :: count возвращает целое число со знаком?
Почему? Отрицательные элементы счета в контейнере не имеют никакого смысла.
Разница будет отрицательной, если диапазон недействителен, и это дает неопределенное поведение во время алгоритма. –
Это обсуждение может быть полезно: http://stackoverflow.com/questions/7505083/why-does-the-c-standard-algorithm-count-return-a-ptrdiff-t-instead-of-size-t?answertab = active # tab-top – Jordan
@ChristianIvicevic, я смущен. Это неопределенное поведение или нет? Я имею в виду, что либо границы итераторов проверяются, и они возвращают отрицательное значение при ошибке, либо это неопределенное поведение, а затем возвращаемое значение не определено. – qdii