gpt4 book ai didi

c++ - 在函数内部初始化浮点矩阵

转载 作者:行者123 更新时间:2023-11-30 04:24:28 25 4
gpt4 key购买 nike

我在尝试在函数内初始化全局 C++ 矩阵(二维数组)时遇到了这个问题:

这是我在做的事情

#include <iostream>
#include <math.h>
#include <Windows.h>

using namespace std;

float matrix[5][5];

void setIR(){
matrix[5][5]= {
{ 17.2, 22.75, 2.5, -9.15, 0.2},
{ 22.75, 145.5, 9.25, 20.75, 5.25 },
{ 2.5, 9.25, 76.5, -15.5, -6.0 },
{ -9.15, 20.75, -15.5, 37.3, -25.65 },
{ 0.2, 5.25, -6.0, -25.65, 41.2 }
};

int main(){
//rest of the code
......
}

我只得到一堆

1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(46): error C2059: syntax error : '{'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(46): error C2143: syntax error : missing ';' before '{'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(47): error C2143: syntax error : missing ';' before '}'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(47): error C2143: syntax error : missing ';' before ','
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(48): error C2143: syntax error : missing ';' before '{'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(48): error C2143: syntax error : missing ';' before '}'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(48): error C2143: syntax error : missing ';' before ','
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(49): error C2143: syntax error : missing ';' before '{'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(49): error C2143: syntax error : missing ';' before '}'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(49): error C2143: syntax error : missing ';' before ','
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(50): error C2143: syntax error : missing ';' before '{'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(50): error C2143: syntax error : missing ';' before '}'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(50): error C2143: syntax error : missing ';' before ','
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(51): error C2143: syntax error : missing ';' before '{'
1>c:\users\apple\documents\visual studio2010\projects\jcb\jcb\jcbPIO.cpp(51): error C2143: syntax error : missing ';' before '}'

我做错了什么或 C++ 限制?

最佳答案

您只能在初始化时使用 {} 初始化程序语法,并且您只能在其定义处初始化全局变量。

对于这种情况,您可以初始化一个不同的矩阵,然后只复制内容:

void setIR(){
static const float init[5][5]= {
{ 17.2, 22.75, 2.5, -9.15, 0.2},
{ 22.75, 145.5, 9.25, 20.75, 5.25 },
{ 2.5, 9.25, 76.5, -15.5, -6.0 },
{ -9.15, 20.75, -15.5, 37.3, -25.65 },
{ 0.2, 5.25, -6.0, -25.65, 41.2 }
};
memcpy(matrix, init, sizeof(matrix));
}

如果您不喜欢 memcpy 之类的东西,那么您可以通过循环手动复制,或者尝试使用 STL,但我认为这是这种情况下最简单和最短的解决方案.

关于c++ - 在函数内部初始化浮点矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12762385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com