![](/img/trans.png)
[英]How to determine constexpr size of C array typedef without sizeof, similar to std::size
[英]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
?
你需要的是一個別名模板 :
template <size_t S>
using my_array = std::array<double, S>;
您無法直接創建typedef
模板,請參閱此帖子 。
size_t
是第二個模板參數std::array
size_t
的類型,而不是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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.