Ich war wirklich überrascht zu sehen, dass std::count
eine iterator_traits<InputIterator>::difference_type
zurückgegeben, die wiederum bezieht sich auf eine long int
auf meiner Plattform.Warum gibt std :: count eine vorzeichenbehaftete Ganzzahl zurück?
Warum ist das? Ein negatives Zählen von Elementen innerhalb eines Containers macht keinen Sinn.
Der Unterschied ist nur negativ, wenn der Bereich ungültig ist, und dies führt zu einem undefinierten Verhalten während des Algorithmus. –
Diese Diskussion kann hilfreich sein: http://stackoverflow.com/questions/7505083/why-does-the-c-standard-algorithm-count-return-a-ptrdiff-t-instead-of-size-t?answertab = aktiv # tab-top – Jordan
@ChristianIvicevic, ich bin verwirrt. Ist es undefiniertes Verhalten oder nicht? Ich meine, entweder die Grenzen der Iteratoren werden überprüft und es wird ein negativer Wert bei einem Fehler zurückgegeben, oder es ist ein undefiniertes Verhalten und dann ist das, was es zurückgibt, undefiniert. – qdii