我目前正在尝试对我正在读入的一些数据的一堆变量(基于不同相空间中的标准化)进行复杂的变量校正。由于每次校正都遵循相同的过程,我想知道是否会有无论如何,要迭代地执行此操作,而不是单独处理每个变量(因为我需要对大约 18-20 个变量执行此操作)。 C++ 可以处理这个吗?有人告诉我在 python 中尝试这个,但我觉得它可以在 C++ 中以某种方式完成......我只是碰壁了!
为了给你一个想法,给你一些类似的东西:
class VariableClass{
public :
//each object of this class represents an event for this particlular data set
//containing the following variables
double x;
double y;
double z;
}
我想做一些类似的事情:
for (int i=0; i < num_variables; i++)
{
for (int j=0; j < num_events; j++)
{
//iterate through events
}
//correct variable here, then move on to next one
}
预先感谢您的任何建议!
我假设您的成员变量不会全部具有相同的类型。否则你可以把它们扔进容器里。如果您有 C++11,解决此问题的一种方法是tuple http://en.cppreference.com/w/cpp/utility/tuple。和一些模板元编程 https://stackoverflow.com/a/6401663/46821您可以模拟元组所有元素的循环。功能std::tie http://en.cppreference.com/w/cpp/utility/tuple/tie将构建一个引用所有成员的元组,您可以像这样“迭代”:
struct DoCorrection
{
template<typename T>
void operator()(T& t) const { /* code goes here */ }
};
for_each(std::tie(x, y, z), DoCorrection());
// see linked SO answer for the detailed code to make this special for_each work.
然后,你可以专攻operator()
对于每个成员变量类型。这将让您自动进行适当的数学运算,而无需手动跟踪类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)