Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阵列运算;与(:)等价的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 - Fatal编程技术网

阵列运算;与(:)等价的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++开源矩阵/向量包,而不是手动定义特定类型。一种可能是使用犰狳图书馆

阵列运算;与(:)等价的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>

您想做的事情可以这样做: 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>     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意味着将第一行的所有列设置为零。您可以使用自定义类来表示use
std::valarray
@JeJo什么?我很抱歉。哇!感谢您的广泛回复。这对我是一个有价值的帮助!再次感谢