Le intestazioni di libreria standard C++ possono includere l'un l'altro in modi non specificati, pertanto i programmatori in genere non dovrebbero dipendere da un'intestazione che include un'altra. In alcuni casi, tuttavia, un'intestazione è garantita per includere un'altra intestazione o per rendere disponibili alcune funzioni che altrimenti richiederebbero l'inclusione di un'altra intestazione. Quali sono quei casi?Quali intestazioni nella libreria standard C++ sono garantite per includere un'altra intestazione?
Quali intestazioni nella libreria standard C++ sono garantite per includere un'altra intestazione?
risposta
Questa risposta ignora le intestazioni C - sia le <meow.h>
sia le <cmeow>
. Dei ++ intestazioni di libreria C (tutti i riferimenti sono a N4659):
<initializer_list>
è garantito per essere incluso da:
<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>
è garantito per includere <ios>
, <streambuf>
, <istream>
, e <ostream>
(§30.4.1 [iostream.syn]).
<ios>
include <iosfwd>
(§30.5.1 [ios.syn]).
<bitset>
è garantito per includere <string>
e <iosfwd>
(§23.9.1 [bitset.syn]).
La funzione libera Modelli std::begin
, std::end
, i C++ 14 c-
, r-
e cr-
versioni, e C++ 17 modelli funzionali liberi std::size
, std::empty
e std::data
nominalmente risiedere in <iterator>
, ma sono anche disponibili se qualsiasi delle seguenti intestazioni è incluso: <array>
, <deque>
, <forward_list>
, <list>
, <map>
, <regex>
, <set>
, <string>
, <unordered_map>
, <unordered_set>
, e <vector>
(§27.7 [iterator.range], §27.8 [iterator.container]).
Quando <string_view>
è incluso, i *begin
e *end
funzioni e le due generici std::swap
sovraccarichi definiti [utility.swap] (swap(T&, T&)
e swap(T (&a)[N], T (&b)[N])
) sono garantiti per essere disponibile. size/empty/data
, tuttavia, non lo sono. (§24.4.1 [string.view.synop]).
@ShafikYaghmour L'unica differenza dopo aver confrontato N3337 e N4140 è la mancanza di 'std :: cbegin' ecc. In C++ 11. La maggior parte di questo è nella sinossi delle rispettive intestazioni. –
- 1. Quali classi di eccezioni sono nella libreria standard C++
- 2. C - come includere le proprie intestazioni contenute nella cartella separata
- 3. Include la libreria standard C++
- 4. Perché alcuni identificatori nella libreria C++ standard sono brevi?
- 5. Le funzioni definite nelle intestazioni sono garantite come inline?
- 6. Differenza tra libreria standard C e libreria POSIX
- 7. boost :: alternativa opzionale nella libreria standard C++
- 8. Libreria standard matura per C
- 9. Ho bisogno di un blocco "C" esterno per includere intestazioni C standard?
- 10. Quanti file di intestazione ci sono nello standard C++?
- 11. versioni della libreria standard C++
- 12. Libreria standard Intel (C++)
- 13. Metodo standard per includere la libreria javascript da javascript
- 14. Libreria solo intestazioni opzionale
- 15. Quanto l'estensibilità della libreria standard C influisce sui programmi C++?
- 16. Quali sono i punti dei file di intestazione in C?
- 17. facilmente includere intestazioni dalla dipendenza della libreria in cmake
- 18. Quali sono gli elementi più sorprendenti dello standard C++?
- 19. Come per includere JavaScript nella pagina di intestazione MVC4
- 20. Esiste una funzione virtuale pura nella libreria standard C++?
- 21. È corretto lanciare eccezioni definite nella libreria standard C++?
- 22. Quali sono gli hash (#) usati nella sorgente della libreria?
- 23. I nomi nella libreria standard C++ sono scritti in inglese britannico o americano inglese?
- 24. Quali sono i caratteri unicode standard?
- 25. Intestazioni precompilate nei file di intestazione
- 26. Quali sono le monadi Scala standard diverse da Opzione?
- 27. Quali sono i campi di intestazioni HTTP richiesti
- 28. Quali sono le eccezioni standard di Scala?
- 29. Includi intestazioni esterne in Eclipse per C
- 30. PEP 257 assestamento docstring nella libreria standard?
Perché queste informazioni sono utili? – Pradhan
@Pradhan È utile sapere, ad esempio, che se hai incluso '' non devi includere '', o '' se hai solo bisogno di 'std :: begin' /' std :: FINE'. –
Ah, ha senso. Grazie! – Pradhan