【问题标题】:member reference base type 'double [10]' is not a structure or union成员引用基类型“双 [10]”不是结构或联合
【发布时间】:2020-02-01 13:27:21
【问题描述】:

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

这里有什么问题?

【问题讨论】:

  • 这是一个用于物理根项目的 C++ 文件

标签: c++ root


【解决方案1】:

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

应该是

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,反之亦然。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    相关资源
    最近更新 更多