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



我创建了一个固定数组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()));

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

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

它指的是操作 e_pt.begin(( 无效。

这是怎么回事?

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

它应该是

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

此错误与在数组上使用 . 运算符有关。如果循环的大小为lep_ptlep_n并且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.

最新更新