成员引用基类型 'double [10]' 不是结构或联合

member reference base type 'double [10]' is not a structure or union

我创建了一个用零初始化的固定数组 e_pt[10]。然后我在数组 e_pt 中填充了一些值。然后我想找到数组中最大元素的索引。代码如下所示。

double e_pt[10] = {};

for (size_t lep_i=0; lep_i<lep_n; lep_i++) // loop over leptons
{
    if (lep_type->at(lep_i) == 11)   // record kinematic info of electrons into array
    {
        e_pt[lep_i] = lep_pt->at(lep_i); 
    }

} // end of loop over leptons       

int e_index = std::distance(e_pt.begin(), std::max_element(e_pt.begin(), e_pt.end()));

然而,当我尝试编译它时,出现了以下错误:

member reference base type 'double [10]' is not a structure or union

指的是动作e_pt.begin()无效。

这里有什么问题?

std::max_element(e_pt.begin(), e_pt.end())原生数组没有这样的方法。

应该是

std::max_element(std::begin(e_pt), std::end(e_pt));

此错误与 .数组上的运算符。如果 lep_nlep_pt 的大小并且 lep_pt 是与 C++ 范围兼容的容器,那么您的循环可以更简单。

size_t lep_i = 0;
for (auto pt : lep_pt)
  if (lep_type->at(lep_i) == 11)   
    e_pt [lep_i++] = pt;

或相对于 lep_type 反之亦然。