gpt4 book ai didi

c++组织变量进行计算 - 速度和可读性

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:28:33 25 4
gpt4 key购买 nike

我目前正在进行大量数值计算,在使用变量( double 类型)时速度是最重要的。想知道是否有更易读的方法来执行以下操作,或者是否有使用结构或增强库的更好方法。

更新:经过一段时间后,由于有很多变量,我最初的目标是将变量间接组织到某种容器中,最好同时将变量维护为对象而不是引用/指针。

1) 我将对变量进行大量冗长的计算,它们按照使用顺序声明,并在整个程序中更改

2)当我决定编辑代码时,可以随时将变量添加到程序中(相当频繁)

3) 组织变量(放入指针或其他容器中)对于轻松地共同处理这些对象很重要 - 当我例如一段时间后将所有这些对象写入文件

我正在考虑创建一个类来创建一个类型(所有变量对象都是 double 类型)并自动添加到指针 vector 中 - 作为附带问题,这会不会有点矫枉过正

我有很多变量像这样进行各种计算(这恰好需要时间):

double varName1 = someValue;
double varName2 = someValue;
double varName3 = someValue;
...
double varNameN = someValue;
...
SOME_COMPUTATION HERE

我认为这是每个变量的可读性最明显的方式。为了将来可能的输出存储集合,我将所有内容放入容器中,并为每个元素创建一个引用变量,如下所示

std::vector<double> store;
...
ADD VALUES TO VECTOR
...
double& varName1 = store[0];
double& varName2 = store[1];
...

然而,当我执行上述方法时,使用引用 (&) 变量的计算成本更高(超时)。然后我决定做相反的事情,存储一个指针 vector 而不是变量,如果我需要将所有文件写入文件,例如我将使用这个 vector 并像往常一样对变量执行计算(不是引用)。为此,我想出了以下(丑陋的)方式

std::vector<double*> store;
double create_v(double init, double& d)
{
store.push_back(&d);
d = init;
}

double varName1 = create_v(0.05,varName1);

如果 1) 有一个更好的实现,使用模板/提升可读性来做同样的事情,或者 2) 像我这样的 C++ 初学者应该知道另一种方法吗? 3)优化我没有考虑最小化上面提到的一些开销(我用 -O2 和 -O3 测试,我使用 g++4.7.2)

最佳答案

g++ 4.7.2 版本提供support C++11 的 initializer lists .这意味着您可以编写以下代码将所有变量放入 vector<double> 中:

vector<double> vec = {varName1, varName2, varName3, ..., varNameN};

这是相当干净的,并且应该为您提供一种将变量组织到 vector 中以用于输出目的的简单方法。这是一个 small demo on ideone .

附言你的第三个例子不起作用,因为你推回了一个引用,而不是一个指针。不过,这应该是一个编译时错误。

关于c++组织变量进行计算 - 速度和可读性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15458202/

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