You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

询问用于获取多维数组各维度大小的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 03:31:12