gpt4 book ai didi

c++ - 使用 std::extent 获取数组的第二维

转载 作者:行者123 更新时间:2023-12-03 10:04:58 24 4
gpt4 key购买 nike

我正在尝试使用 std::extent 获取二维数组的第二维,但输出为 0 .

#include <iostream>
#include <type_traits>


int32_t main(int32_t argc, char *argv[]) {
int32_t arr[10][100];

std::cout << "first dim: " << sizeof(arr) / sizeof(*arr) << std::endl;
std::cout << "second dim: " << sizeof(*arr) / sizeof(**arr) << std::endl;

std::cout << "rank: " << std::rank<decltype(arr)>{} << std::endl;
std::cout << "first dim: " << std::extent<decltype(arr)>{} << std::endl;
std::cout << "second dim: " << std::extent<decltype(*arr)>{} << std::endl;

return EXIT_SUCCESS;
}

最佳答案

你得到0结果的原因是decltype(*arr)有类型 int32_t(&)[100] ,它是对数组类型的引用。 std::extent返回 0除非你把它传递给一个数组类型。
您可以通过删除这样的引用来获得预期的结果:

std::extent<std::remove_reference_t<decltype(*arr)>>{}  // 100
这是一个 demo .

关于c++ - 使用 std::extent 获取数组的第二维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65038159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com