在C中,你可以做int a[] = {1,2,3,4,5}
,但是C++ 11 std::array<int> a = {1,2,3,4,5}
會給出「太少的模板參數」編譯錯誤。任何方式在這個?初始化隱含長度的std :: array
0
A
回答
5
你能得到的最好是make_array
,是這樣的:
template<typename T, typename...Ts>
constexpr std::array<T, 1 + sizeof...(Ts)> make_array(T&& head, Ts&&...tail)
{
return {{ std::forward<T>(head), std::forward<Ts>(tail)... }};
}
-3
實施的std ::數組:
template<typename T, std::size_t N>
struct array {
T array_impl[N];
};
所以這應該工作:
std::array<std::int, 5> a = {{ 1, 2, 3, 4, 5 }};
基本上是一樣(如編譯器同意下車內大括號
。std::array<std::int, 5> a = { 1, 2, 3, 4, 5 };
請參閱
+1
所以你怎麼能做到這一點不用說了數組的長度是5? –
+0
你確實指定了數組Rikayan,看看傳遞給模板的第二個模板參數。 –
+6
@DoryZidon這並不回答他問的問題。 –
相關問題
- 1. 在初始化std :: array
- 2. std :: vector用於std :: array初始化
- 3. 通過std :: initializer_list初始化std :: pair在初始化std :: array時不工作?
- 4. std :: array <T>初始化
- 5. 使用'this'指針初始化std :: array
- 6. 如何初始化類像std :: array
- 7. 的std ::陣列隱式初始化
- 8. 用於初始化2D std :: array成員的初始化程序列表
- 9. std :: map初始化std :: vector
- 10. std :: unordered_map初始化
- 11. 初始化std :: atomic_bool?
- 12. 如何使用默認值初始化std :: std :: vector對的固定長度?
- 13. 初始化從初始化列表中的std ::元組
- 14. 2D矢量初始化:初始化設置怪異長度
- 15. 如何構造具有初始化列表的std :: array對象?
- 16. std :: array的內聯初始化有什麼問題?
- 17. 初始化動態長度的wchar_t
- 18. std ::數組初始化列表在初始化列表中初始化
- 19. 初始化的std ::複雜
- 20. 用lambdas初始化std :: unique_ptr的std :: vector
- 21. 是std :: array <int, 10>作爲類成員零初始化?
- 22. 如何在類定義中初始化std :: array?
- 23. 初始化std :: array沒有複製/移動元素
- 24. GCC 4.4.7無法從初始化列表轉換爲std :: array
- 25. 初始化含有初始化列表
- 26. 初始化可變長度c-串類
- 27. 初始化列表std :: pair
- 28. 崩潰初始化std :: String
- 29. std :: mutex初始化異常
- 30. 未定義參考`的std ::的ios_base ::初始化::初始化()」
爲什麼它是'1 + sizeof ...(Ts)'?什麼是額外的空間? – 0x499602D2
@ 0x499602D2:'1'用於第一個參數'T head'(我們從'head'推斷出這個類型)。 – Jarod42