std::array
在 C 领域, std::array
考虑以下代码片段:
<code class="cpp">template<typename T, int N> void f(T value) { std::array<T, N> items = {value, value, value, value, value}; }</code>
虽然简单,但手动重复该值会变得乏味,因为N 增加。为了解决这个问题,一种更优雅的方法是利用 C 17 的结构化绑定和可变参数模板。
利用序列生成器和重复函数
这种优雅的关键解决办法在于生成一个序列类型的seq使用 genseq_t<>发电机。有了这个序列类型,我们可以定义一个重复函数,它接受一个值和生成的序列作为参数,并返回一个 std::array
示例实现
<code class="cpp">template<typename T, int N> void f(T value) { // genseq_t<N> represents seq<0,1,...N-1> std::array<T, N> items = repeat(value, genseq_t<N>{}); }</code>
模式详细信息
此技术允许对 std::array
以上是如何在 C 中使用非默认可构造类型优雅地初始化 `std::array` ?的详细内容。更多信息请关注PHP中文网其他相关文章!