小编kam*_*r83的帖子

乘法与双打 C++

我是 C++ 的新手,我想对其中设置的 mandelbrot 进行编码,以进行一些练习并将速度与 Python 进行比较。我用来迭代以查看复数是否达到无穷大的函数如下所示:

int iterate(double ir, double ii, int iterations){
    double sr = 0.0;
    double si = 0.0;
    unsigned int steps = 0;
    while(sr < 2.0 && sr > -2.0 && si < 2.0 && si > -2.0 && steps < iterations){
        sr = sr*sr-si*si+ir;
        si = si*sr*2 + ii;
        steps ++;
    }
    return steps;
}
Run Code Online (Sandbox Code Playgroud)

我将输出与我的 python 代码进行了比较,并意识到它更新虚部的行不能正常工作。*2 不能正常工作。Insted 加倍会使结果为负。例如,当我插入数字 0.2 + 1i 时,它会执行以下操作:

0.2 + 1i、-0.76 - 0.52i、0.5072 + 0.472512i、0.233984 + 1.22112i、-1.23639 - 2.01956i …

c++ mandelbrot

3
推荐指数
1
解决办法
113
查看次数

将指针传递给向量是否比向量本身更快?

在我的程序中,我有一个将多个向量作为参数的函数。我曾经将它们作为法向量传递,因此函数的定义如下所示:

void do(std::vector<int> a, std::vector<int> b, std::vector<int> c){
Run Code Online (Sandbox Code Playgroud)

电话看起来像这样:

do(d, e, f);
Run Code Online (Sandbox Code Playgroud)

但我希望我的代码尽可能快,所以我想知道是否不传递向量而是传递指向向量的指针会更快。所以函数的定义看起来像这样:

void do(std::vector<int> *a, std::vector<int> *b, std::vector<int> *c){
Run Code Online (Sandbox Code Playgroud)

和这样的电话:

do(&d, &e, &f);
Run Code Online (Sandbox Code Playgroud)

此更改是否会对性能产生影响?如果是:正数或负数,如果我的向量只包含 3 个元素,这是否有很大区别?

c++ vector parameter-passing

2
推荐指数
1
解决办法
143
查看次数

标签 统计

c++ ×2

mandelbrot ×1

parameter-passing ×1

vector ×1