c++ - 如何将数组部分初始化为某个默认值?

标签 c++ c++11 c++14 c++20

我有一个数组(例如, unsigned int arr[1000] )。
我想像这样初始化数组的元素..

arr = {4, 10, 34, 45, 6, 67, UINT_MAX, UINT_MAX .. 994 times}
那是在我分配一些值之前,我希望数组中的默认值是 UINT_MAX。
有没有办法做到这一点?
当然 for 循环总是存在的,但除此之外还有其他任何方式。

最佳答案

请使用 2 阶段方法。首先,使用初始化列表,然后用 std::fill 填充其余部分

#include <limits>
#include <algorithm>

constexpr size_t ArraySize = 1000U;

int main() {
    int arr[ArraySize] = { 4,10,34,45,6,67 };
    
    std::fill(arr + 6U, arr + ArraySize, std::numeric_limits<int>::max());

    return 0;
}

关于c++ - 如何将数组部分初始化为某个默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62750151/

相关文章:

c++ - 4.4 和 4.7 之间 C++ STL 容器初始化器列表行为的差异

c++ - 如何解决 Cppcheck 中的问题 ID "toomanyconfigs"和 "missingInclude:"

c++ - 模板函数使用参数包时如何传递其他模板参数?

c++ - 使用 SFINAE 启用基于包大小的部分特化

c++ - 输入特征以检查类是否具有成员函数

c++ - for循环计数器不增加

c++ - 为什么复制构造函数只能接受一个引用参数?

c++ - Blas 和 Lapack 库是否有原生 C++(不是 C)接口(interface)?

c++ - 封闭循环变量的生命周期和范围是多少?

c++ - 如何强制编译器为手动切换生成等效代码?