gpt4 book ai didi

c++ - 用现代 C++ STL 数据结构替换旧的 C 风格数组

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:29 25 4
gpt4 key购买 nike

我用 C++ 实现了一个简单的 n 体模拟类。但是,该类使用了很多旧的 C 样式数组,我想将其替换为 STL 提供的数据结构。

这是我想要改进的代码的相关部分:

struct Particle{
double m; // mass
double x[DIM]; // position
double v[DIM]; // velocity
double F[DIM]; // force
};

class Nbody {
private:
const unsigned int n; // number of particles
const double dt; // step size
const double t_max; // max simulation time
std::vector<Particle> p;
public:
~Nbody(){};
Nbody(unsigned int n_, double dt_, double t_max_);
};

Nbody::Nbody(unsigned int n_, double dt_, double t_max_)
: n{n_}, dt{dt_}, t_max{t_max_} {
p = new std::vector<Particle> [n];
}

我尝试使用 std::vector<Particle> .但是在这种情况下我该如何初始化 n粒子正确吗?我当前的方法不起作用,编译器会抛出许多错误。我该如何正确操作?

最佳答案

p不是指针。 p被声明为 vector 。

像这样重写构造函数定义

Nbody::Nbody(unsigned int n_, double dt_, double t_max_)
: n{n_}, dt{dt_}, t_max{t_max_}, p( n_ ) {
}

在这种情况下, vector p被初始化为具有 n 个元素的 vector ,这些元素是值初始化的。

同样在定义结构Particle您可以将数组替换为 std::array<double, DIM> 类型的对象.也最好使常量 DIM作为结构的枚举器或作为结构的静态数据成员/

关于c++ - 用现代 C++ STL 数据结构替换旧的 C 风格数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58554954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com