首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建类的数组

创建类的数组
EN

Stack Overflow用户
提问于 2011-04-30 18:30:41
回答 3查看 119关注 0票数 0

我得到了这样一个类:

代码语言:javascript
运行
复制
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;
};

并使用以下命令初始化它:

代码语言:javascript
运行
复制
me362 domain1;
me362 domain2;
me362 domain3;

但是我想确定我想要初始化的域的数量。所以我需要一个me362结构的动态数组。我该怎么做呢?这是可以做到的吗?

谢谢大家

埃姆雷。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-30 18:34:31

使用std::vector,它为您处理动态内存:

代码语言:javascript
运行
复制
#include <vector>

// ...

std::vector<me362> domains;

vector还有很多很好的特性和保证,比如与C语言布局兼容,具有引用局部性,每个元素的开销为零,等等。

还请注意,std::vector有一个接受整数参数的构造函数,并创建了这么多元素:

代码语言:javascript
运行
复制
// Will create a vector with 42 default-constructed me362 elements in it
std::vector<me362> domains(42);

有关使用std::vector的详细信息,请参阅任何标准库参考(如cppreference.comcplusplus.com)。)

票数 1
EN

Stack Overflow用户

发布于 2011-04-30 18:35:06

是的,这是可以做到的。取而代之的是使用std::vector,这会在每个push_back操作上动态增加它的大小。

代码语言:javascript
运行
复制
std::vector<me362> obj ;

for( int i = 0; i < numberOfInstancesRequired; ++i )
{
    obj.push_back( me362() ) ;
}
票数 3
EN

Stack Overflow用户

发布于 2011-04-30 18:34:06

首先,欢迎来到STL(standard template library)的世界!

在您的例子中,您可以使用std::vector,因为它可以为您保存可变数量的元素。

代码语言:javascript
运行
复制
#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();

此外,您还可以像这样创建一个矢量对象。

代码语言:javascript
运行
复制
//nMe362: number of elements in vector, me362Obj: init value of each me362 object
vector<me362> myVector(nMe362, me362Obj);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5841155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档