嗨stackoverflow社区,
我目前在代码中有一个常量数据集,该常量是从文本文件加载的。这些变量在学习算法中一直被使用,因此我将它们声明为我类的执行速度成员(以下示例为6,但我有100 +):
class learningGraphDataset
{
public:
learningGraphDataset();
loadDatasetValuesFromTextFile();
private:
// DATASET
uint32_t _CST_FACTOR_MIN1;
uint32_t _CST_FACTOR_MIN2;
uint32_t _CST_FACTOR_MAX12;
uint32_t _CST_FACTOR_MAX12;
**
** (many others)
**
uint32_t _CST_LIMIT13;
};
我将所有值保存在一个文件中,以便能够生成一组新数据(遗传算法),并使用新的数据集文本文件重新启动软件。
问题是,当我想从文本文件中加载每个值时,我有大约800行内容:
QString cstName = tmpLineSplitted[0];
uint32_t cstVal = tmpLineSplitted[1].toUInt();
if (cstName == "CST_FACTOR_MIN1_VAL")
{
_CST_FACTOR_MIN1 = cstVal;
errorOnLine=false;
nbConstantsLoaded++;
}
else if (cstName == "CST_FACTOR_MIN2_VAL")
{
_CST_FACTOR_MIN2 = cstVal;
errorOnLine=false;
nbConstantsLoaded++;
}
**
**(many others)
**
else if (cstName == "CST_LIMIT13_VAL")
{
_CST_LIMIT13 = cstVal;
errorOnLine=false;
nbConstantsLoaded++;
}
再加上一个常数,它开始变得很慢。 我的文本文件如下所示:
CST_FACTOR_MIN1_VAL;61;
CST_FACTOR_MIN2_VAL;13;
**
**(many others)
**
CST_LIMIT13_VAL;27;
我知道在C ++中无法加载这样的变量(“反射”语言?)
variable("_CST_FACTOR_MIN1") = cstVal;
代码有效,但是有没有一种更好的方式编写所有这些代码呢?映射也许?在两列中都包含所有内容(文本文件中的变量名和真实的变量名)?如果a可以通过循环加载所有常量,这将有助于获得更清晰的代码。
我使用C ++ 11和Qt5库
非常感谢