Summing struct members inside a vector

后端 未结 5 1066
闹比i
闹比i 2020-12-29 08:22

Consider the following:

typedef struct {
    int a;
    int b;
    int c;
    int d;
} ABCD;

typedef std::vector VecABCD;

Say

5条回答
  •  独厮守ぢ
    2020-12-29 09:16

    Another option would be to use pointer-to-members:

    int CalcSumOf(const VecABCD & vec, int ABCD::*member)
    {
        int sum = 0;
        for(VecABCD::const_iterator it = vec.begin(), end = vec.end(); it != end; ++it)
            sum += (*it).*member;
        return sum;
    }
    ...
    int sumA = CalcSumOf(myVec, &ABCD::a);  // find sum of .a members
    int sumB = CalcSumOf(myVec, &ABCD::b);  // find sum of .b members
    // etc.
    

提交回复
热议问题