使用相同元素的数组初始化

时间:2017-09-12 17:03:24

标签: c++

是否有使用常量初始化固定大小数组的快捷方式。例如,我需要int array[300]在300个空格中每个都有10个,是否有诀窍避免写入10 300次?

2 个答案:

答案 0 :(得分:8)

这是一个使用初始化的编译时解决方案(使用std::array而不是C数组):

template<std::size_t N, typename T, std::size_t... Is>
constexpr std::array<T, N> make_filled_array(
    std::index_sequence<Is...>,
    T const& value
)
{
    return {((void)Is, value)...};
}

template<std::size_t N, typename T>
constexpr std::array<T, N> make_filled_array(T const& value)
{
    return make_filled_array<N>(std::make_index_sequence<N>(), value);
}

auto xs = make_filled_array<300, int>(10);
auto ys = make_filled_array<300>(10);

答案 1 :(得分:6)

您可以使用std::fill_n

int array[300] = {0};        // initialise the array with all 0's
std::fill_n(array, 300, 10); // fill the array with 10's