如何在C ++中的函数中将静态数组初始化为特定值?

双曲线

我正在尝试在函数中初始化静态数组。

int query(int x, int y) {
    static int res[100][100]; // need to be initialized to -1
    if (res[x][y] == -1) {
        res[x][y] = time_consuming_work(x, y);
    }
    return res[x][y];
}

我该如何实现?

博洛夫

首先,我强烈建议您从C数组移至std::array如果执行此操作,则可以有一个函数来执行初始化(否则就不能,因为函数不能返回C数组):

constexpr std::array<std::array<int, 100>, 100> init_query_array()
{
    std::array<std::array<int, 100>, 100> r{};
    for (auto& line : r)
        for (auto& e : line)
            e = -1;
    return r;
}

int query(int x, int y) {
    static std::array<std::array<int, 100>, 100> res = init_query_array();

    if (res[x][y] == -1) {
        res[x][y] = time_consuming_work(x, y);
    }
    return res[x][y];
}

我实际上更喜欢的另一个选择是在lambda中执行init:

int query(int x, int y) {
    static auto res = [] {
        std::array<std::array<int, 100>, 100> r;
        for (auto& line : r)
            for (auto& e : line)
                e = -1;
        return r;
    }();

    if (res[x][y] == -1) {
        res[x][y] = time_consuming_work(x, y);
    }
    return res[x][y];
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java中将数组的所有元素初始化为任何特定值

如何在C中将数组初始化为0?

如何在C中将数组初始化为全0?

如何在C中将结构数组初始化为Global?

如何在Java中将2D数组的所有元素初始化为任何特定值

如何在Swift中将数组的所有成员初始化为相同的值?

如何在bash中将数组元素初始化为0?

如何在TypeScript中将数组初始化为元组类型?

编译器如何在C中将数组初始化为零?

如何在 C++ 中将结构初始化为 0

在C ++中将数组的所有元素初始化为一个默认值?

如何在 C++ 构造函数初始值设定项列表中初始化非内置类型的数组?

如何在函数中的堆上初始化静态结构?

如何在Java中初始化对象的静态数组

如何在 Java 中静态初始化对象数组

将大型二维数组初始化为 C++ 中的所有值

如何在Golang中将从protobuf导入的消息初始化为数组

如何在类中将向量初始化为特定长度?

我如何在C ++中初始化静态指针?

将字符数组初始化为C ++中的NULL

如何在cython中将结构初始化为NULL?

如何在TypeScript中将{[key:string]:string}初始化为{}?

如何在默认构造函数中初始化数组?

如何在构造函数中初始化对象数组?

如何在C中将文字初始化为size_t?

如何在 C++ 中的构造函数内初始化二维数组?

如何在 C++ 初始值设定项列表中将常量引用成员初始化为另一个成员(标准向量)

如何在C中初始化未知大小的数组

如何在 C 编程中初始化多维数组