我创建了一个固定数组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_pt
lep_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
.