std::empty
De cppreference.com
Definido en el archivo de encabezado <array> | ||
Definido en el archivo de encabezado <deque> | ||
Definido en el archivo de encabezado <forward_list> | ||
Definido en el archivo de encabezado <iterator> | ||
Definido en el archivo de encabezado <list> | ||
Definido en el archivo de encabezado <map> | ||
Definido en el archivo de encabezado <regex> | ||
Definido en el archivo de encabezado <set> | ||
Definido en el archivo de encabezado <span> | (desde C++20) | |
Definido en el archivo de encabezado <string> | ||
Definido en el archivo de encabezado <string_view> | ||
Definido en el archivo de encabezado <unordered_map> | ||
Definido en el archivo de encabezado <unordered_set> | ||
Definido en el archivo de encabezado <vector> | ||
(1) | ||
template<class C> constexprauto empty(const C& c)-> decltype(c.empty()); | (desde C++17) (hasta C++20) | |
template<class C> [[nodiscard]]constexprauto empty(const C& c)-> decltype(c.empty()); | (desde C++20) | |
(2) | ||
template<class T, std::size_t N> constexprbool empty(const T (&array)[N])noexcept; | (desde C++17) (hasta C++20) | |
template<class T, std::size_t N> [[nodiscard]]constexprbool empty(const T (&array)[N])noexcept; | (desde C++20) | |
(3) | ||
template<class E> constexprbool empty(std::initializer_list<E> il)noexcept; | (desde C++17) (hasta C++20) | |
template<class E> [[nodiscard]]constexprbool empty(std::initializer_list<E> il)noexcept; | (desde C++20) | |
Devuelve si el contenedor dado está vacío.
1) devuelve c.empty()
2) devuelve false
3) devuelve il.size()==0
Contenido |
[editar]Parámetros
c | - | Un contenedor con una función miembro empty . |
array | - | Un array de tipo arbitrario. |
il | - | Una lista de inicializadores. |
[editar]Valor de retorno
true Si el contenedor no tiene ningún elemento.
[editar]Posible implementación
Primera versión |
---|
template<class C>constexprauto empty(const C& c)-> decltype(c.empty()){return c.empty();} |
Segunda versión |
template<class T, std::size_t N>constexprbool empty(const T (&array)[N])noexcept{returnfalse;} |
Tercera versión |
template<class E>constexprbool empty(std::initializer_list<E> il)noexcept{return il.size()==0;} |
[editar]Ejemplo
Ejecuta este código
#include <iostream>#include <vector> template<class T>void print(const T& container){if(!std::empty(container)){std::cout<<"Elementos:\n";for(constauto& element : container )std::cout<< element <<'\n';}else{std::cout<<"Vacio\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);}
Salida:
Elementos: 1 2 3 Vacio Elementos: 4 5 6 Elementos: 7 8 9
[editar]Véase también
(C++20) | Comprueba si un rango está vacío. (objeto punto de personalización) |