【发布时间】:2012-11-06 20:34:19
【问题描述】:
我正在学习一种用于查找数组中元素数量的技术(这样我就可以开始编写排序算法,而无需将数组的长度作为参数传递给数组),但是在教程,这一行显示为模板声明:
template <typename T, size_t N>
老实说,我不知道你可以在一个模板声明中声明多个类型名,但“size_t N”还有什么作用?这也是模板声明中的变量声明吗?
【问题讨论】:
-
没有 size_t 意味着您正在使用 size_t 类型的整数值创建模板,如果您使用的是编译时数组(通常用于小 N),这可以帮助您。你要明白
typename T的意思是T是模板中泛型类型的占位符。 -
size_t 是一种无符号类型,用于包含某种大小,例如以字节数或字符数表示的缓冲区大小。
-
请注意有
std::array和std::extent。这些也可以帮助您处理数组中的元素数量。 -
@DyP,有趣,我很久以前才看到
std::extent,忘记了。 -
@chris 虽然我不明白他们为什么没有提供 constexpr 函数来推断长度。
标签: c++ arrays function templates