不重复地初始化非默认可构造 std::array
在 C 中,初始化非默认可构造元素的 std::array可能是一个挑战。当数组大小 n 很大或模板参数时,标准初始化方法变得很麻烦。
解决方案:
一个优雅的解决方案利用迭代器和模板的组合。它的工作原理如下:
我们定义两个辅助实用程序:
使用这些实用程序,我们可以初始化 std::array在模板函数 f 中如下:
<code class="cpp">template<typename T, int N> void f(T value) { std::array<T, N> items = repeat(value, genseq_t<N>{}); }</code>
实现细节:
示例:
考虑使用 value 作为整数、n 作为模板参数的初始化:
<code class="cpp">void f(int value) { std::array<T, 5> items = repeat(value, genseq_t<5>{}); }</code>
这里,项目将是使用重复五次的值进行初始化:{value, value, value, value, value}。
优点:
这种方法更简洁,尤其是当 n 为大的。它还消除了手动重复该值的需要。
以上是如何在 C 中不重复地初始化非默认可构造 `std::array` ?的详细内容。更多信息请关注PHP中文网其他相关文章!