如何迭代 C++ 类的变量成员

2023-12-23

我目前正在尝试对我正在读入的一些数据的一堆变量(基于不同相空间中的标准化)进行复杂的变量校正。由于每次校正都遵循相同的过程,我想知道是否会有无论如何,要迭代地执行此操作,而不是单独处理每个变量(因为我需要对大约 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(使用前将#替换为@)

如何迭代 C++ 类的变量成员 的相关文章

随机推荐