std::empty
Von cppreference.com
| Definiert in der Header-Datei <array> |
||
| Definiert in Header <deque> |
||
| Definiert in Header <flat_map> |
||
| Definiert in Header <flat_set> |
||
| Definiert in Header <forward_list> |
||
| Definiert in Header <inplace_vector> |
||
| Definiert in Header <iterator> |
||
| Definiert in Header <list> |
||
| Definiert in Header <map> |
||
| Definiert in Header <regex> |
||
| Definiert in Header <set> |
||
| Definiert in Header <span> |
||
| Definiert in Header <string> |
||
| Definiert in Header <string_view> |
||
| Definiert in Header <unordered_map> |
||
| Definiert in Header <unordered_set> |
||
| Definiert in Header <vector> |
||
template< class C > constexpr auto empty( const C& c ) -> decltype(c.empty()); |
(1) | (seit C++17) |
template< class T, std::size_t N > constexpr bool empty( const T (&array)[N] ) noexcept; |
(2) | (seit C++17) |
template< class E > constexpr bool empty( std::initializer_list<E> il ) noexcept; |
(3) | (seit C++17) |
Gibt zurück, ob der gegebene Bereich leer ist.
1) Gibt `c.empty()` zurück.
2) Gibt `false` zurück.
3) Gibt `il.size() == 0` zurück.
Inhalt |
[bearbeiten] Parameter
| c | - | ein Container oder View mit einer Member-Funktion `empty` |
| array | - | Ein Array beliebigen Typs |
| il | - | eine `std::initializer_list` |
[bearbeiten] Rückgabewert
1) `c.empty()`
2) `false`
3) `il.size() == 0`
[bearbeiten] Ausnahmen
1) Kann implementierungsabhängige Ausnahmen auslösen.
[bearbeiten] Hinweise
Die Überladung für `std::initializer_list` ist notwendig, da diese keine Member-Funktion `empty` besitzt.
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_nonmember_container_access |
201411L |
(C++17) | std::size(), std::data() und `std::empty()` |
[bearbeiten] Mögliche Implementierung
| Erste Version |
|---|
template<class C> [[nodiscard]] constexpr auto empty(const C& c) -> decltype(c.empty()) { return c.empty(); } |
| Zweite Version |
template<class T, std::size_t N> [[nodiscard]] constexpr bool empty(const T (&array)[N]) noexcept { return false; } |
| Dritte Version |
template<class E> [[nodiscard]] constexpr bool empty(std::initializer_list<E> il) noexcept { return il.size() == 0; } |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <iostream> #include <vector> template<class T> void print(const T& container) { if (std::empty(container)) std::cout << "Empty\n"; else { std::cout << "Elements:"; for (const auto& element : container) std::cout << ' ' << element; std::cout << '\n'; } } int main() { std::vector<int> c = {1, 2, 3}; print(c); c.clear(); print(c); int array[] = {4, 5, 6}; print(array); auto il = {7, 8, 9}; print(il); }
Ausgabe
Elements: 1 2 3 Empty Elements: 4 5 6 Elements: 7 8 9
[bearbeiten] Siehe auch
| (C++20) |
prüft, ob ein Range leer ist (Customization Point Objekt) |