c++ 多维数组的维度大小

y1aodyip  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(194)

我知道,但是现在不记得返回用于声明多维数组的大小的函数模板std::???了。你能提醒我一下这个函数吗?如果我没记错的话,它的工作原理就像下面的例子。

#include <iostream>

int main() {
  int a[][2] = {{}, {}, {}};
  std::cout << std::size(a) << std::endl;    // outputs 3
  std::cout << std::???<0>(a) << std::endl;  // outputs 3, same as std::size(a)
  std::cout << std::???<1>(a) << std::endl;  // outputs 2, same as std::size(a[0])
}

我不需要它的实现,我想使用现有的函数。
感谢@sklott的回答:

#include <iostream>
#include <type_traits>

int main() {
  int a[][2] = {{}, {}, {}};
  std::cout << std::size(a) << std::endl;                        // outputs 3
  std::cout << std::extent<decltype(a), 0>::value << std::endl;  // outputs 3, same as std::size(a)
  std::cout << std::extent<decltype(a), 1>::value << std::endl;  // outputs 2, same as std::size(a[0])
}
fjaof16o

fjaof16o1#

感谢@sklott的回答:

#include <iostream>
#include <type_traits>

int main() {
  int a[][2] = {{}, {}, {}};
  std::cout << std::size(a) << std::endl;                   // outputs 3
  std::cout << std::extent<decltype(a), 0>() << std::endl;  // outputs 3, same as std::size(a)
  std::cout << std::extent<decltype(a), 1>() << std::endl;  // outputs 2, same as std::size(a[0])
}

相关问题