从数组的类型中获取数组的大小

Get the size of an array from its type

本文关键字:数组 获取 类型      更新时间:2023-10-16

我有一个模板参数T,我知道它将是

MyArray<Tbis, n>

有没有一种方法可以返回整数n,这样我就可以将其用作模板参数?

致问候,

如果我正确理解这个问题,那么您需要获得数组的大小,并将其用作模板参数。为此,您可以使用size(),因为它是一个constexpr。

类似这样的东西:

#include <iostream>
#include <array>

typedef std::array< int, 72 > myArray;
template< int N = myArray().size() >
struct A
{
    void foo()
    {
        std::cout << N << std::endl;
    }
};
int main()
{
    A<> a;
    a.foo();
}

这就是您想要做的吗?

#include <iostream>
#include <array>
template <typename T, size_t N>
void f(std::array<T, N>& a)
{
    std::cout << N << 'n'; 
}
int main()
{
    std::array<int, 34> a;
    f(a);
}

是。成员函数(至少在Visual Studio 2010上)size()max_size()都返回项数。

#include "stdafx.h"
#include <array>
#include <iostream>
template<class T>
int tuple_size(T t)
{
    return std::tuple_size<T>::value;
}
int main()
{ 
    std::array<int, 4> nums;
    std::cout << "size(): " << nums.size() << "n";
    std::cout << "max_size(): " << nums.max_size() << "n";
    std::cout << "tuple_size: " << tuple_size(nums)  << "n";
}