使用自定义值编译时 std::index_sequence

问题描述 投票:0回答:1

我想创建一个

std::index_sequence
来保存给定数字的倍数。

假设我想保存像

0, 3, 6, 9, ...
0, 2, 4, 6, 8, 10, ...
这样的值。

如何创建这样的自定义序列?

我想通过给出要生成的值的数量并在连续值之间步进来使用它。

c++ templates c++17
1个回答
1
投票

我会使用“正常”索引序列并将其乘以

M
,如下所示:

template <std::size_t M, std::size_t N>
auto make_index_sequence_as_multiple_of() {
    return []<std::size_t... I>(std::index_sequence<I...>) {
        return std::index_sequence<(I * M)...>{};
    }(std::make_index_sequence<N>{});
}
© www.soinside.com 2019 - 2024. All rights reserved.