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

时间:2019-10-03 08:52:35

标签: c++ root

我创建了一个以零初始化的固定数组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()));

但是,当我尝试编译它时,会发生以下错误:

  

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

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

这是怎么了?

1 个答案:

答案 0 :(得分:0)

std::max_element(e_pt.begin(), e_pt.end())本机数组没有类似的方法。

应该是

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

此错误与的使用有关。数组上的运算符。如果lep_n的大小为lep_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反之亦然。