我正在尝试找到一个特定的结构成员,该成员是使用 lambda 函数的结构向量
I am trying to find a specific struct member which a vector of structs using a lambda function
>我得到了以下结构。我有一个 tps 的向量。
struct tp{
unsigned int channel;
unsigned int tstart;
unsigned int tspan;
unsigned int adcsum;
unsigned int adcpeak;
unsigned int flags;
};
我无法修改结构或向其添加运算符。我有一个特定 tstart 的向量 (all_candidates(,我需要在 tps 的向量上寻找它。
std::vector< TP> Tps; //these are the input TPs.
std::vector< std::pair<double,double> > all_candidates;//every element is a time-tstart from a TP.
const auto& tmp1 = &(all_candidates.at[0].first);
auto first_tp = std::find_if(candidates.begin(),candidates.end(),[&tmp1](const TP& tp_1){return tp_1.first_time == tmp1 ;});
但是当我运行这段代码时,我得到一个编译错误,第一个是:
error: reference to non-static member function must be called
const auto& tmp1 = all_candidates.at[0].first;
找到给定的 TP 的正确语法是什么? 谢谢
正如错误告诉您的那样,该行
const auto& tmp1 = &(all_candidates.at[0].first);
是问题所在。正如阿尔吉尔达斯·普雷季乌斯所指出的,它应该是all_candidates.at(0)
的。此外,第二个&
是多余的,被解释为地址运算符。该行应为:
const auto& tmp1 = all_candidates.at(0).first;
但是,由于tstart
是一个简单的int
,这里不需要参考。你可以简单地写:
const int tmp1 = all_candidates.at(0).first;
同样,您可以按值捕获tmp1
,而不是按 lambda 中的引用捕获。
相关文章:
- 如何在C++中定义静态成员结构
- 使用模板化类的成员结构
- 初始化固定的 C 数组成员结构
- 指向成员结构的指针如何工作
- 如何将此“指针从外部类传递到成员结构
- 导致IAR ARM中出现错误的成员结构位字段元素的Initializer列表初始化
- 映射文件中成员结构的地址
- Visual C++ 模板类成员结构初始化语法糖
- C :初始化成员结构的静态字段的正确方法
- 如何在C 类的初始化器列表中使用未命名结构初始化成员结构
- 从成员结构的成员函数中访问类的成员?
- 模板化类的成员函数无法返回指向成员结构的指针?
- 重载非类型模板结构的成员结构的复制赋值运算符
- 灵气属性传播问题与单成员结构.
- 将具有 int* 成员C++结构编接到 C#
- 复杂的班级成员结构
- 将向量成员(结构)传递给函数
- 成员结构的前向声明
- 重载运算符<<用于模板结构中定义的成员结构
- 返回带有模板化类的类成员结构