使用最少/一行代码更新一维数组的多个位置

Update multiple locations of one-dimensional array with minimum/one line(s) of code

本文关键字:一维数组 更新 代码 位置 一行      更新时间:2023-10-16

我在C++中全局初始化了一维数组

Gfloat cone1[] = { 0.0f, 2.4f, -11.0f, 30.0f, -1.5, 0.0, 0.0 };

我想在我写最少/一行代码的主函数中,用我选择的不同数字更新它的所有值。

有可能吗?

我不想这样做:-

cone1[0] = 12f , cone1[1] = 56f; ...

如果您愿意切换到使用std::vectorstd::array,可以使用统一初始化和赋值。

以下示例将std::vector用于大小可变的数组。

#include <vector>
int main()
{
    std::vector<Gfloat> cone1 { 0.0f, 2.4f, -11.0f };
    cone1 = { 30.0f, -1.5, 0.0 };
}

以下示例将std::array用于固定大小的阵列。

#include <array>
int main()
{
    std::array<Gfloat, 3> cone1 { 0.0f, 2.4f, -11.0f };
    cone1 = { 30.0f, -1.5, 0.0 };
}

如果在另一个数组中有要替换的值,可以使用std::copy:

std::copy(newCone, newCone + 7, cone1);

如果你想在一行上完成,那么就在一行:

cone1[0] = 12f; cone1[1] = 56f; ... // and so on

将所有代码都显示在一行上/以minium代码为目标并不能使其更高效,尽管多行可读代码比文件中占用较少空间的紧凑代码要好。

我按照@Captain Obvlious的建议解决了我的问题。

-c-f消息长度=0替换为-c-fmessage长度=0-std=c++11

确保在-c-fmessage length=0-std=c++11之间留有空格

否则,您的项目将显示它正在生成,但不会创建.exe文件。