vector<int>
hat beide vector<int>::size_type
und vector<int>::difference_type
. Es scheint nicht notwendig zu sein, dass beide existieren, da size_type
garantiert in der Lage ist, einen Wert so groß wie die maximale Anzahl von Elementen zu halten, die ein vector<int>
auf einem gegebenen System enthalten kann, und in jedem gültigen Anwendungsfall sollte difference_type
notwendigerweise kleiner sein als oder gleich der maximalen Anzahl von Elementen, dh der Abstand zwischen zwei Elementen in einem sequentiellen Container ist nie größer als die maximale Anzahl von Elementen, die der sequentielle Container enthalten kann. Könnte jemand ein Beispiel geben, wo es eine nützliche Unterscheidung zwischen den beiden gibt?Warum haben sequentielle Container sowohl size_type als auch difference_type?
14
A
Antwort
27
container::difference_type
existiert, weil für einige Sequenzcontainer Iteratoren subtrahiert werden können. Diese Subtraktion kann zu einer negativen Zahl führen. Sie können container::size_type
nicht für dieses Ergebnis verwenden, da es nicht signiert ist, so dass Sie nie einen negativen Wert haben. So haben wir container::difference_type
, die eine vorzeichenbehaftete Ganzzahl ist, die die difference_type
des Iterators des Containers ist.
Verwandte Themen
- 1. STL-Container 'difference_type typedef
- 2. 'size_t' vs 'container :: size_type'
- 3. Warum verwendet os.path sowohl '\' als auch '/'?
- 4. Haben sowohl mousedown/mouseup als auch dblclick in jQuery
- 5. C++: Warum kann mit der Vorlage nicht sowohl der Container- als auch der Elementtyp abgeleitet werden?
- 6. Warum sowohl der Typklassen- als auch der implizite Argumentmechanismus?
- 7. Warum liefert Data.Set sowohl elems als auch toList?
- 8. Warum hat HttpClientHandler sowohl Proxy- als auch UseProxy-Eigenschaften?
- 9. Warum hat COBOL sowohl `SECTION` als auch` PARAGRAPH`?
- 10. Warum brauchen wir sowohl iterierbare als auch Iteratorkonzepte?
- 11. Warum haben so viele Programme sowohl eine setup.exe als auch eine setup.msi?
- 12. Warum einige Programme sowohl .lib als auch .dll benötigen ...
- 13. Warum sowohl Tableau als auch expliziter Solver in DifferentialEquations.jl?
- 14. Warum sind sowohl asp-validation-for als auch @ Html.ValidationMessage() erforderlich?
- 15. Warum ist diese Prologabfrage sowohl wahr als auch falsch?
- 16. Java: Warum verwendet String.compareIgnoreCase() sowohl Character.toUpperCase() als auch Character.toLowerCase()?
- 17. Warum ist BrowserRouter sowohl ein Router als auch eine Route?
- 18. Warum verwendet eine deklarierte Eigenschaft sowohl retain als auch readonly?
- 19. Warum kann ich QList :: size_type nicht als std :: string :: size_type verwenden? (Template-Parameter-Fehler)
- 20. Brauche ich sowohl jdk als auch jre?
- 21. Making sowohl horizontal als auch vertikal ScrollableLayout
- 22. DOMPDF Seitenausrichtung sowohl Querformat als auch Hochformat
- 23. Anwendung verbindet sowohl Qt5 als auch Qt4
- 24. TypeError: sowohl int als auch float
- 25. Kann Hyperlinktext sowohl Wörter als auch dekorative Bilder enthalten?
- 26. Webpack: TypScript-Modul sowohl "normal" als auch als Rohzeichenfolge importieren
- 27. autowiring Bohnen instanziiert sowohl einzeln als auch als Liste
- 28. qmake: make sowohl ausführbare als auch statische lib
- 29. Sowohl SCSS- als auch CSS-Dateien im Plugin-Verzeichnis?
- 30. Fokus auf Eingabe feuert sowohl 'Fokus' als auch 'Auswahl' Ereignis
Wenn man zwei verschiedene Typen für 'size' und' difference' verwendet, wird dies von einigen als Fehler im ursprünglichen Design von STL angesehen. Also nicht zu viel darauf legen. Siehe zum Beispiel. https://www.youtube.com/watch?v=wvtFGa6XJDU – alfC