如何 typedef a std::array 具有未指定的大小?
How to typedef a std::array with a unspecified size?
我想写一些像
这样的变量
std::array<double, array_num> a;
其中array_num
是一个const int
表示数组的长度。但是它很长,我想为它创建一个别名:
typedef std::array<double, array_num> my_array;
对吗?我怎样才能像 my_array<3>
一样使用 my_array
?
你需要的是 alias template:
template <size_t S>
using my_array = std::array<double, S>;
您不能直接制作 typedef
模板,请参阅 this post。
size_t
是 std::array
采用的第二个模板参数的类型,而不是 int
。
既然您了解了 using
,您应该会用到它。它可以做 typedef
所做的一切,再加上这个。另外,你从左到右阅读它,用一个漂亮的 =
符号作为分隔符,而不是 typedef
,这有时可能会伤害你的眼睛。
让我再添加两个使用示例:
template <typename T>
using dozen = std::array<T, 12>;
如果您想为 std::array
创建别名,您需要模仿其模板签名:
template <typename T, size_t S>
using my_array = std::array<T, S>;
- 因为这是不允许的:
using my_array = std::array;
我想写一些像
这样的变量std::array<double, array_num> a;
其中array_num
是一个const int
表示数组的长度。但是它很长,我想为它创建一个别名:
typedef std::array<double, array_num> my_array;
对吗?我怎样才能像 my_array<3>
一样使用 my_array
?
你需要的是 alias template:
template <size_t S>
using my_array = std::array<double, S>;
您不能直接制作 typedef
模板,请参阅 this post。
size_t
是 std::array
采用的第二个模板参数的类型,而不是 int
。
既然您了解了 using
,您应该会用到它。它可以做 typedef
所做的一切,再加上这个。另外,你从左到右阅读它,用一个漂亮的 =
符号作为分隔符,而不是 typedef
,这有时可能会伤害你的眼睛。
让我再添加两个使用示例:
template <typename T>
using dozen = std::array<T, 12>;
如果您想为 std::array
创建别名,您需要模仿其模板签名:
template <typename T, size_t S>
using my_array = std::array<T, S>;
- 因为这是不允许的:
using my_array = std::array;