Die Header der C++ - Standardbibliothek können sich auf nicht spezifizierte Weise gegenseitig umfassen, so dass Programmierer im Allgemeinen nicht von einer Kopfzeile einschließlich einer anderen abhängig sein sollten. In einigen Fällen wird jedoch garantiert, dass ein Header einen anderen Header enthält, oder bestimmte Funktionen verfügbar machen, die andernfalls die Aufnahme eines anderen Headers erfordern würden. Was sind diese Fälle?Welche Header in der C++ - Standardbibliothek enthalten garantiert einen weiteren Header?
Antwort
Diese Antwort ignoriert C-Header - sowohl die <meow.h>
als auch die.. Von dem C++ Bibliothek Header (alle Angaben beziehen sich auf N4659):
<initializer_list>
garantiert durch einbezogen werden:
<utility>
(§23.2.1 [utility.syn])<string>
(§24.3.1 [string.syn])<array>
(§26.3.2 [array.syn])<deque>
(§26.3.3 [deque.syn])<forward_list>
(§26.3.4 [forward_list.syn])<list>
(§26.3.5 [list.syn])<vector>
(§26.3.6 [vector.syn])<map>
(§26.4.2 [associative.map.syn])<set>
(§26.4 .3 [associative.set.syn])<unordered_map>
(§26.5.2 [unord.map.syn])<unordered_set>
(§26.5.3 [unord.set.syn])<queue>
(§26.6.2 [queue.syn])<stack>
(§26.6.3 [stack.syn])<algorithm>
(§28.2 [algorithms.syn])<random>
(§29.6.2 [rand.synopsis])<valarray>
(§29.7.1 [valarray.syn])<regex>
(§31.4 [re.syn])
<iostream>
garantiert <ios>
, <streambuf>
, <istream>
und <ostream>
(§30.4.1 [iostream.syn]) aufzunehmen.
<ios>
enthält garantiert <iosfwd>
(§30.5.1 [ios.syn]).
<bitset>
wird garantiert <string>
und <iosfwd>
(§23.9.1 [bitset.syn]) enthalten.
Die freie Funktionsschablonen std::begin
, std::end
, die C++ 14 c-
, r-
und cr-
Versionen und die C++ 17 frei Funktionsschablonen std::size
, std::empty
und std::data
nominell in <iterator>
residieren, sondern sind auch verfügbar, wenn irgendwelche die folgenden Header enthalten ist: <array>
, <deque>
, <forward_list>
, <list>
, <map>
, <regex>
, <set>
, <string>
, <unordered_map>
, <unordered_set>
und <vector>
(§27.7 [iterator.range], §27.8 [iterator.container]).
Wenn <string_view>
enthalten ist, die *begin
und *end
Funktionen und die beiden generischen std::swap
definiert Überlastungen in [utility.swap] (swap(T&, T&)
und swap(T (&a)[N], T (&b)[N])
) sind garantiert zur Verfügung stehen. size/empty/data
sind jedoch nicht. (§24.4.1 [string.view.synop]).
@ShafikYaghmour Der einzige Unterschied nach dem Vergleich von N3337 und N4140 ist das Fehlen von 'std :: cbegin' usw. in C++ 11. Das meiste davon befindet sich in der Übersicht für die jeweiligen Header. –
- 1. Wo sind die Header der C++ - Standardbibliothek
- 2. Gibt der Standard an, welche Header andere Header enthalten?
- 3. sollte ich einen Header enthalten, der bereits über andere Header enthalten ist?
- 4. Sind in Header definierte Funktionen garantiert inline?
- 5. C++ müssen Header enthalten viele Verzeichnisse bis
- 6. g ++ Standard-Header enthalten Liste
- 7. Vorwärts Deklaration enum in C-Header in C++ enthalten
- 8. Welche Ausnahmeklassen befinden sich in der C++ - Standardbibliothek?
- 9. In C oder C++ kann ich Beschränkungen auferlegen, welche Dateien meine Header-Datei enthalten können
- 10. Gibt es STL-Header, die nicht Teil der C++ - Standardbibliothek sind?
- 11. Was garantiert die Standardbibliothek für die Selbstbewegung?
- 12. Welche Header für einen NTSTATUS beim Erstellen für ARM-Plattformen enthalten?
- 13. wie ein PHP-Header in HTML enthalten
- 14. sind C-Funktionen in <c____> Header deklariert im globalen Namespace sowie std garantiert werden?
- 15. g ++ Header enthalten: noch keine Definition
- 16. steuern, welche Projekt-Header-Datei Xcode enthält
- 17. Welche Header-Datei definiert Serial.begin?
- 18. C/C++ Header-Datei Dokumentation
- 19. Welche Header in Tensorflow laden Grafik C++ Beispiel laden?
- 20. Sollte ein HTTP Allow-Header "OPTIONS" enthalten?
- 21. Streifen WAV-Header in C#
- 22. Kreis C++ Header-
- 23. Ersatz der Header-Datei iostream.h in c
- 24. Versionen der C++ - Standardbibliothek
- 25. Liste aller Header-Dateien von einer C-Datei enthalten
- 26. PHP - Hauptdatei wird Header nicht enthalten
- 27. C++ - Header und Hauptfehler
- 28. HttpListener Server Header C#
- 29. Namespaces in C++ - Header-Dateien
- 30. Abbrechen einen Header (Refresh)
Warum sind diese Informationen nützlich? – Pradhan
@Pradhan Es ist nützlich zu wissen, dass, wenn Sie '' 'enthalten, Sie' 'oder' 'nicht brauchen, wenn Sie nur' std :: begin'/'std :: brauchen Ende. –
Ah, macht Sinn. Vielen Dank! – Pradhan