auto cmp = [](SubOutput* lhs, SubOutput* rhs) { return *lhs->getVituralRectY()< *rhs->getVituralRectY(); };
时间: 2024-02-10 08:18:07 浏览: 54
在这个 lambda 表达式中,`lhs` 和 `rhs` 都是指向 `SubOutput` 对象的指针,而 `getVituralRectY()` 函数返回的是 `float*` 类型的指针,因此需要使用解引用运算符 `*` 来获取指针所指向的 `float` 值,而不是使用箭头运算符 `->`。
因此,正确的 lambda 表达式应该是:
```cpp
auto cmp = [](SubOutput* lhs, SubOutput* rhs) {
return *lhs->getVituralRectY() < *rhs->getVituralRectY();
};
```
这个比较函数使用 `getVituralRectY()` 函数返回的 `float*` 指针所指向的 `float` 值来比较两个 `SubOutput` 对象的大小。
相关问题
快速获取到 std::list<SubOutput*> subOutputList 中某一个SubOutput* 成员最小 subOutput是一个类
可以使用 `std::min_element` 算法来实现获取最小值。具体代码如下:
```cpp
#include <algorithm> // 包含 min_element 算法所需的头文件
// 假设 subOutputList 已经被初始化并填充了数据
std::list<SubOutput*> subOutputList;
// 使用 lambda 表达式作为比较函数,按照 SubOutput* 成员的大小比较
auto cmp = [](SubOutput* lhs, SubOutput* rhs) {
return *lhs < *rhs;
};
// 使用 std::min_element 算法获取最小值
auto it = std::min_element(subOutputList.begin(), subOutputList.end(), cmp);
// 如果 subOutputList 不为空,则 it 指向其中最小的 SubOutput*
if (it != subOutputList.end()) {
SubOutput* smallestSubOutput = *it;
}
```
这里使用了 lambda 表达式作为比较函数,可以根据 SubOutput 类中的某个成员变量来进行比较。如果 SubOutput 类中没有定义比较运算符,需要在 lambda 表达式中自定义比较规则。
快速获取到 std::list<SubOutput*> subOutputList 中某一个SubOutput* 成员最小 ubOutput是一个类,其中含有某个float大小数据
可以使用 `std::min_element` 算法来实现获取最小值。具体代码如下:
```cpp
#include <algorithm> // 包含 min_element 算法所需的头文件
// 假设 subOutputList 已经被初始化并填充了数据
std::list<SubOutput*> subOutputList;
// 使用 lambda 表达式作为比较函数,按照 SubOutput* 中 float 成员的大小比较
auto cmp = [](SubOutput* lhs, SubOutput* rhs) {
return lhs->getFloatMember() < rhs->getFloatMember();
};
// 使用 std::min_element 算法获取最小值
auto it = std::min_element(subOutputList.begin(), subOutputList.end(), cmp);
// 如果 subOutputList 不为空,则 it 指向其中最小的 SubOutput*
if (it != subOutputList.end()) {
SubOutput* smallestSubOutput = *it;
}
```
这里使用了 lambda 表达式作为比较函数,可以根据 SubOutput 类中的某个 `float` 成员变量来进行比较。如果 SubOutput 类中没有定义相应的成员函数来获取该成员变量,则需要在 lambda 表达式中自定义获取该成员变量的方式。
阅读全文