阵列运算;与(:)等价的Fortran语言 我正从Fortran转换成C++。在Fortran中,在2D数组iea(1000,3)上,我可以执行以下操作: A(1,:)=(x0,y0,z0) 我在网上搜索过,没有发现任何与C++接近的东西,所以我可以矢量化一些操作。如果使用std::array容器并使用std::array::operator=您可以执行以下操作: std::array<std::array<int, 3>, 1000> A; int x0, y0, z0; A[0] = std::array<int, 3>{x0, y0, z0}; std::数组A; int x0,y0,z0; A[0]=std::数组{x0,y0,z0}; > p> C++语言不包括内置的矩阵类型,但包含了构建一个矩阵所需的所有工具。幸运的是,这并不意味着你需要自己去建造一个。事实上,这有点像是重新发明轮子 我建议您依赖现有的C++开源矩阵/向量包,而不是手动定义特定类型。一种可能是使用犰狳图书馆
您想做的事情可以这样做: A.行(0)=行向量{x0,y0,z0} 下面是自包含源代码的示例:阵列运算;与(:)等价的Fortran语言 我正从Fortran转换成C++。在Fortran中,在2D数组iea(1000,3)上,我可以执行以下操作: A(1,:)=(x0,y0,z0) 我在网上搜索过,没有发现任何与C++接近的东西,所以我可以矢量化一些操作。如果使用std::array容器并使用std::array::operator=您可以执行以下操作: std::array<std::array<int, 3>, 1000> A; int x0, y0, z0; A[0] = std::array<int, 3>{x0, y0, z0}; std::数组A; int x0,y0,z0; A[0]=std::数组{x0,y0,z0}; > p> C++语言不包括内置的矩阵类型,但包含了构建一个矩阵所需的所有工具。幸运的是,这并不意味着你需要自己去建造一个。事实上,这有点像是重新发明轮子 我建议您依赖现有的C++开源矩阵/向量包,而不是手动定义特定类型。一种可能是使用犰狳图书馆,c++,c++14,C++,C++14,您想做的事情可以这样做: A.行(0)=行向量{x0,y0,z0} 下面是自包含源代码的示例: #include <armadillo> #include <iostream> using arma::Mat; using arma::vec; using arma::rowvec; using arma::colvec; int main(int argc, const char* argv[]) { Mat<double>
#include <armadillo>
#include <iostream>
using arma::Mat;
using arma::vec;
using arma::rowvec;
using arma::colvec;
int main(int argc, const char* argv[])
{
Mat<double> A = Mat<double>(1000, 3, arma::fill::zeros);
std::cout << "Shape of matrix A: " <<
A.n_rows << "x" << A.n_cols << std::endl;
double x0 = 1.5;
double y0 = 2.5;
double z0 = 3.5;
A.row(0) = rowvec{x0, y0, z0}; // HERE
std::cout << " A(0,0)=" << A(0,0) << " A(0,1)=" << A(0,1)
<< " A(0,2)=" << A(0,2) << std::endl;
std::cout << " A(1,0)=" << A(1,0) << " A(1,1)=" << A(1,1)
<< " A(1,2)=" << A(1,2) << std::endl;
return 0;
}
#包括
#包括
使用arma::Mat;
使用arma::vec;
使用arma::rowvec;
使用arma::colvec;
int main(int argc,const char*argv[]
{
Mat A=Mat(1000,3,arma::填充::零);
对不起,你能简单解释一下A(1,:)=(x0,y0,z0)
吗?我不熟悉Fortran。数组或者A
数组在Fortran中是动态分配的还是静态分配的?假设A是静态分配的数组,那么A是(1,:)=0意味着将第一行的所有列设置为零。您可以使用自定义类来表示usestd::valarray
@JeJo什么?我很抱歉。哇!感谢您的广泛回复。这对我是一个有价值的帮助!再次感谢