簡體   English   中英

如何鍵入一個未指定大小的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

你需要的是一個別名模板

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM