我上了一堂如下:
class me362
{
public:
void geometry(long double xLength);
void mesh(int xNode);
void properties(long double H, long double D, long double K,long double Q, long double DT,long double PHO,long double CP, long double TINF);
void drichlet(long double TLeft,long double TRight);
void neumann(bool Tlinks, bool Trechts);
void updateDiscretization(long double**** A,long double* b, long double* Tp);
void printVectorToFile(long double *x);
private:
int xdim;
long double xlength;
long double tleft;
long double tright;
long double h;
long double d;
long double k;
long double q;
long double dt;
long double cp;
long double rho;
long double Tinf;
bool tlinks;
bool trechts;
};
我使用
初始化它me362 domain1;
me362 domain2;
me362 domain3;
但我想确定我想要初始化的域的数量。所以我需要一个me362结构的动态数组。我怎样才能做到这一点?可以吗?
谢谢大家,
埃姆雷。
答案 0 :(得分:3)
是的,可以做到。使用std::vector代替,这会在每次push_back操作时动态增加它的大小。
std::vector<me362> obj ;
for( int i = 0; i < numberOfInstancesRequired; ++i )
{
obj.push_back( me362() ) ;
}
答案 1 :(得分:1)
首先,欢迎来到STL(standard template library)
的世界!
在您的情况下,您可以使用std::vector
,因为它可以为您保存可变数量的元素。
#include<vector>
using namespace std;
//Create a std::vector object with zero size
vector<me362> myVector;
//Insert new items
myVector.push_back(domain1);
myVector.push_back(domain2);
myVector.push_back(domain3);
//Get the size of the vector, i.e., number of elements in vector
myVector.size();
此外,你可以像这样创建一个矢量对象。
//nMe362: number of elements in vector, me362Obj: init value of each me362 object
vector<me362> myVector(nMe362, me362Obj);
答案 2 :(得分:1)
使用std :: vector,它为你处理动态内存:
#include <vector>
// ...
std::vector<me362> domains;
std :: vector也有许多不错的功能和保证,比如与C布局兼容,具有引用位置,每个元素零开销等等。
另请注意,std :: vector有一个构造函数,它接受一个整数参数,并创建了许多元素:
// Will create a vector with 42 default-constructed me362 elements in it
std::vector<me362> domains(42);
有关使用std :: vector的详细信息,请参阅任何标准库引用(如cppreference.com或cplusplus.com)。