我创建了一个以零初始化的固定数组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()无效。
这是怎么了?
答案 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
反之亦然。