在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