C++ 用最少/一行代码更新一维数组的多个位置
我有一个用C全局初始化的一维数组++C++ 用最少/一行代码更新一维数组的多个位置,c++,c,logic,pseudocode,C++,C,Logic,Pseudocode,我有一个用C全局初始化的一维数组++ Gfloat cone1[] = { 0.0f, 2.4f, -11.0f, 30.0f, -1.5, 0.0, 0.0 }; 我想用我在主函数中选择的不同数字更新它的所有值,至少写一行代码 可能吗 我不想这样做:- cone1[0] = 12f , cone1[1] = 56f; ... 如果在另一个数组中有要替换的值,可以使用std::copy: std::copy(newCone, newCone + 7, cone1); 如果在另一个数组中有要
Gfloat cone1[] = { 0.0f, 2.4f, -11.0f, 30.0f, -1.5, 0.0, 0.0 };
我想用我在主函数中选择的不同数字更新它的所有值,至少写一行代码
可能吗
我不想这样做:-
cone1[0] = 12f , cone1[1] = 56f; ...
如果在另一个数组中有要替换的值,可以使用std::copy:
std::copy(newCone, newCone + 7, cone1);
如果在另一个数组中有要替换的值,可以使用std::copy:
std::copy(newCone, newCone + 7, cone1);
如果要在一行上完成,请在一行上完成:
cone1[0] = 12f; cone1[1] = 56f; ... // and so on
使所有代码都显示在一行上/尽管目标是minium代码,但这并不能提高效率-跨更多行的可读代码比占用更少文件空间的紧凑代码要好。如果要在一行上完成,那么在一行上完成:
cone1[0] = 12f; cone1[1] = 56f; ... // and so on
使所有代码都显示在一行上/尽管目标是minium代码,但这并不能提高效率-跨更多行的可读代码比占用更少文件空间的紧凑代码要好。如果您愿意切换到使用
std::vector
或std::array
,则可以使用统一的初始化和任务
下面的示例将std::vector
用于可变大小的数组
#include <vector>
int main()
{
std::vector<Gfloat> cone1 { 0.0f, 2.4f, -11.0f };
cone1 = { 30.0f, -1.5, 0.0 };
}
#include <array>
int main()
{
std::array<Gfloat, 3> cone1 { 0.0f, 2.4f, -11.0f };
cone1 = { 30.0f, -1.5, 0.0 };
}
如果您愿意切换到使用
std::vector
或std::array
可以使用统一初始化和赋值
下面的示例将std::vector
用于可变大小的数组
#include <vector>
int main()
{
std::vector<Gfloat> cone1 { 0.0f, 2.4f, -11.0f };
cone1 = { 30.0f, -1.5, 0.0 };
}
#include <array>
int main()
{
std::array<Gfloat, 3> cone1 { 0.0f, 2.4f, -11.0f };
cone1 = { 30.0f, -1.5, 0.0 };
}
我按照@Captain Obvlious的建议解决了我的问题 将-c-fmessage length=0替换为-c-fmessage length=0-std=c++11 确保在-c-fmessage length=0和-std=c++11之间留出一个空格
否则,您的项目将显示它是生成的,但不会创建.exe文件。我按照@Captain Obvlious的建议解决了我的问题 将-c-fmessage length=0替换为-c-fmessage length=0-std=c++11 确保在-c-fmessage length=0和-std=c++11之间留出一个空格
否则,您的项目将显示它是build,但不会创建.exe文件。我想用我选择的数字更新main函数中的同一数组,写入最小代码,而不是逐个单元格更新。好的,我的答案是一行,如果您不将选择的数字放入其他数组,那么,除了“圆锥[1]=12f等”之外,我看不到其他方法。只需定义“Gfloat newCone[]={12f,56f,…}”,谢谢。让我们看看是否有其他人有解决方案!再次感谢。我想用我选择的数字来更新主函数中的相同数组,并编写最小代码,而不是逐个单元格进行更新。好吧,我的答案是一行,如果你不把你选择的数字放在其他数组中,那么除了“cone[1]=12f等”之外,我看不到其他方法。只需定义“Gfloat newCone[]={12f,56f,…}”,谢谢。让我们看看是否有其他人有解决方案!再次感谢。尝试用建议的代码替换我的代码,但出现错误。我将Eclipse与MinGW一起使用。错误很明显。统一初始化和
initializer\u list
是C++11的特性。将-std=c++0x
或-std=c++11
添加到命令行选项以启用c++11模式。我还建议更新到新版本的GCC。我已经将GCC更新到了新版本,但错误是相同的。请告诉我如何给出那个命令行参数。我正在使用Eclipse IDE for C/C++开发人员版本:Juno Service Release 2构建id:20130225-0426您仍然需要将-std-C++11
或-std-C++0x
添加到命令行。错误消息对此非常清楚。尝试用建议的代码替换我的代码,但出现了错误。我将Eclipse与MinGW一起使用。错误很明显。统一初始化和initializer\u list
是C++11的特性。将-std=c++0x
或-std=c++11
添加到命令行选项以启用c++11模式。我还建议更新到新版本的GCC。我已经将GCC更新到了新版本,但错误是相同的。请告诉我如何给出那个命令行参数。我正在使用Eclipse IDE for C/C++开发人员版本:Juno Service Release 2构建id:20130225-0426您仍然需要将-std-C++11
或-std-C++0x
添加到命令行。关于这一点,错误信息非常清楚。