biblioteca array c++ c++11 stdarray

biblioteca array c++



Obtener el tamaƱo de std:: array sin una instancia (6)

A pesar de la buena respuesta de @ Jarod42, aquí hay otra solución posible basada en decltype que no usa tuple_size .
Sigue un ejemplo de trabajo mínimo que funciona en C ++ 11:

#include<array> struct Foo { std::array<int, 8> bar; }; int main() { constexpr std::size_t N = decltype(Foo::bar){}.size(); static_assert(N == 8, "!"); }

std::array ya tiene una función miembro constexpr llamada size que devuelve el valor que está buscando.

Teniendo en cuenta esta estructura:

struct Foo { std::array<int, 8> bar; };

¿Cómo puedo obtener el número de elementos de la matriz de bar si no tengo una instancia de Foo ?


Podrías darle a Foo un miembro public static constexpr .

struct Foo { static constexpr std::size_t bar_size = 8; std::array<int, bar_size> bar; }

Ahora sabe el tamaño de la barra de Foo::bar_size y tiene la flexibilidad adicional de nombrar a bar_size como algo más descriptivo si Foo alguna vez tiene varios arreglos del mismo tamaño.


Podrías hacer lo mismo que para arreglos heredados:

sizeof(Foo::bar) / sizeof(Foo::bar[0])



Se puede utilizar como:

sizeof Foo().bar


Utilizar:

sizeof(Foo::bar) / sizeof(int)