C++ 课堂上的向量
我想创建一个包含三个不同向量的类,其大小将由构造函数给出。因此,我定义了以下类:C++ 课堂上的向量,c++,class,C++,Class,我想创建一个包含三个不同向量的类,其大小将由构造函数给出。因此,我定义了以下类: #include "World.h" #include <vector> class Field { public: Field(World &world): world(world){ this->_Nx = world.getNx(); phi.reserve(_Nx); };
#include "World.h"
#include <vector>
class Field
{
public:
Field(World &world): world(world){
this->_Nx = world.getNx();
phi.reserve(_Nx);
};
dvector phi;
int getNx() const{return int(_Nx);};
protected:
World &world;
int _Nx;
};
因此,field.phi
是一个大小为\u Nx
的向量
对象,其中\u Nx
由构造函数给出。如果是这样的话,我可以使用field.phi[index]=which
,然后继续编写代码。然而,这并不像预期的那样有效。如果我在main()
中写入:
std::难道你可以把这段代码进一步简化为一段代码吗。此外,请查看cppreference.com上的reserve()
文档。一起,我相信你会发现问题的!课堂上的部分是红鲱鱼。最小的例子是std::vector v;v、 储备(10);我能想出办法吗!我应该使用phi.resize(Nx)代码>而不是phi.reserve(\u Nx)
。谢谢你的回复!实际上,我建议使用适当的构造函数来实现这个效果;将其放入初始值设定项列表phi(world.getNx())
只是一句话:不要为自己的类成员变量使用类似于\u Nx
的名称,因为这是编译器/标准库实现内部使用的名称。
int main(){
/*CODE*/
Field field(world);
};
std::cout << "Size of phi is " << (field.phi).size() << std::endl;