成员引用基类型 '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_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
反之亦然。
我创建了一个用零初始化的固定数组 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_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
反之亦然。