std::empty
De cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| 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> constexpr auto empty(const C& c) -> decltype(c.empty()); |
(desde C++17) (hasta C++20) |
|
template <class C> [[nodiscard]] constexpr auto empty(const C& c) -> decltype(c.empty()); |
(desde C++20) | |
| (2) | ||
template <class T, std::size_t N> constexpr bool empty(const T (&array)[N]) noexcept; |
(desde C++17) (hasta C++20) |
|
template <class T, std::size_t N> [[nodiscard]] constexpr bool empty(const T (&array)[N]) noexcept; |
(desde C++20) | |
| (3) | ||
template <class E> constexpr bool empty(std::initializer_list<E> il) noexcept; |
(desde C++17) (hasta C++20) |
|
template <class E> [[nodiscard]] constexpr bool empty(std::initializer_list<E> il) noexcept; |
(desde C++20) | |
Devuelve si el contenedor dado está vacío.
1) devuelve
c.empty()2) devuelve
false3) devuelve
il.size() == 0Parámetros
| c | - | Un contenedor con una función miembro empty.
|
| array | - | Un array de tipo arbitrario. |
| il | - | Una lista de inicializadores. |
Valor de retorno
true Si el contenedor no tiene ningún elemento.
Posible implementación
| Primera versión |
|---|
template <class C>
constexpr auto empty(const C& c) -> decltype(c.empty())
{
return c.empty();
}
|
| Segunda versión |
template <class T, std::size_t N>
constexpr bool empty(const T (&array)[N]) noexcept
{
return false;
}
|
| Tercera versión |
template <class E>
constexpr bool empty(std::initializer_list<E> il) noexcept
{
return il.size() == 0;
}
|
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 ( const auto& 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
Véase también
(C++20) |
Comprueba si un rango está vacío. (objeto punto de personalización) |