询问用于获取多维数组各维度大小的std函数模板
问题:回忆标准库中获取多维数组维度大小的函数模板
我之前知道一个标准库函数模板,现在忘了它的名字,它可以返回多维数组声明时的维度大小。记得用法大概是这样:
#include <iostream> int main() { int a[][2] = {{}, {}, {}}; std::cout << std::size(a) << std::endl; // 输出3 std::cout << std::???<0>(a) << std::endl; // 输出3,和std::size(a)结果一致 std::cout << std::???<1>(a) << std::endl; // 输出2,和std::size(a[0])结果一致 }
我不需要自己实现这个功能,只想用现成的标准库函数。
答案
你要找的是stdstd::extent,它定义在<type_traits>头文件中,用法示例如下:
#include <iostream> #include <type_traits> int main() { int a[][2] = {{}, {}, {}}; std::cout << std::size(a) << std::endl; // 输出3 std::cout << std::extent<decltype(a), 0>::value << std::endl; // 输出3,和std::size(a)结果一致 std::cout << std::extent<decltype(a), 1>::value << std::endl; // 输出2,和std::size(a[0])结果一致 }
std::extent是一个类型特性模板,第一个模板参数传入数组的类型(通过decltype获取),第二个参数指定要获取的维度索引(从0开始),通过::value就能得到对应维度的大小。
内容的提问来源于stack exchange,提问作者3CEZVQ
相关产品推荐
相关产品推荐

