gpt4 book ai didi

c++ - 获取指向数组末尾的指针

转载 作者:IT老高 更新时间:2023-10-28 23:00:48 26 4
gpt4 key购买 nike

我使用下面的模板来获得一个指向数组最后一个元素之后的指针:

template <typename T, size_t n>
T* end_of(T (&array)[n])
{
return array + n;
}

现在我似乎记得这种方法存在一些问题,但我不记得它是什么。我相信这与类型参数或函数参数的选择有关,但我不确定。因此,作为健全性检查,您是否发现上述代码有任何问题?小用法测试:

int test[] = {11, 19, 5, 17, 7, 3, 13, 2};
std::sort(test, end_of(test));

最佳答案

您的提案不一定在编译时进行评估,它取决于优化。以下是在编译时计算的:

template <typename T, size_t N> char (&array(T(&)[N]))[N];

int main()
{
int myArray[10];

std::cout << sizeof array(myArray) << std::endl;

return 0;
}

它通过创建一个 char 类型的数组来工作,该数组类型与给定数组的元素数量相同。 sizeof 总是以字符数返回大小。

关于c++ - 获取指向数组末尾的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4759078/

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