英文:
Error when trying to make 4d array in C++ (using std::vector and Eigen matrices)
问题
以下是您要的代码部分的中文翻译:
我正在尝试创建一个4D数组,如下所示:
首先,我创建一个用于创建3D数组的函数,初始化为所有元素都为零(这部分正常工作):
std::vector<Eigen::Matrix<double, -1, -1>> vec_of_mats_test(int n_rows, int n_cols, int n_mats) {
std::vector<Eigen::Matrix<double, -1, -1>> my_vec(n_mats);
Eigen::Matrix<double, -1, -1> mat_sizes(n_rows, n_cols);
for (int c = 0; c < n_mats; c++) {
my_vec[c] = mat_sizes;
for (int i = 0; i < n_rows; i++) {
for (int j = 0; j < n_cols; j++) {
my_vec[c](i,j) = 0;
}
}
}
return my_vec;
}
然后,我有以下函数,调用上面的函数以创建一个4D数组:
std::vector<std::vector<Eigen::Matrix<double, -1, -1>>> 4d_array(int n_rows, int n_cols, int n_mats, int n_vecs) {
std::vector<std::vector<Eigen::Matrix<double, -1, -1>>> my_4d_array(n_vecs);
for (int c = 0; c < n_vecs; c++) {
my_4d_array[c] = vec_of_mats_test(n_rows, n_cols, n_mats);
}
return my_4d_array;
}
然而,在编译过程中,我遇到了以下错误:
"在数字常量之前需要未限定的标识符"
我做错了什么?
谢谢
英文:
I am trying to make a 4d array as follows:
First I make a function to create a 3d array, initialised so all the elements are zero (which works fine):
std::vector<Eigen::Matrix<double, -1, -1 > > vec_of_mats_test(int n_rows,
int n_cols,
int n_mats) {
std::vector<Eigen::Matrix<double, -1, -1 > > my_vec(n_mats);
Eigen::Matrix<double, -1, -1 > mat_sizes(n_rows, n_cols);
for (int c = 0; c < n_mats; c++) {
my_vec[c] = mat_sizes;
for (int i = 0; i < n_rows; i++) {
for (int j = 0; j < n_cols; j++) {
my_vec[c](i,j) = 0;
}
}
}
return(my_vec);
}
Then, I have the following function which calls the function above to make a 4d array:
std::vector<std::vector<Eigen::Matrix<double, -1, -1 > > > 4d_array( int n_rows,
int n_cols,
int n_mats,
int n_vecs) {
std::vector<std::vector<Eigen::Matrix<double, -1, -1 > > > my_4d_array(n_vecs);
for (int c = 0; c < n_vecs; c++) {
my_4d_array[c] = vec_of_mats_test(n_rows, n_cols, n_mats);
}
return(my_4d_array);
}
However , during compilation I get the following error:
"expected unqualified-id before numeric constant"
What am I doing wrong?
Thanks
答案1
得分: 3
4d_array
不是C++中的有效标识符名称,因为你不能在标识符的第一个字符使用数字。
请使用另一个有效的名称。
英文:
4d_array
is not a valid identifier name in C++ because you cannot use a number as the first character of an identifier.
Use another valid name instead.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论