QT c++ STL使用二元谓词
QT c++ STL使用二元谓词
https://blog.csdn.net/txwtech/article/details/104391624
https://blog.csdn.net/txwtech/article/details/103754300
#pragma once #include <QtWidgets/QMainWindow> #include "ui_QtWidgetsApplication1.h" class QtWidgetsApplication1 : public QMainWindow { Q_OBJECT public: QtWidgetsApplication1(QWidget *parent = nullptr); void CompareTest(); bool absLess(int elem1, int elem2); ~QtWidgetsApplication1(); private: Ui::QtWidgetsApplication1Class ui; }; template <typename T1, typename T2> class AbsLess { public: bool operator()(T1& t1, T2& t2) { return t1 < t2; } };
#include "QtWidgetsApplication1.h" #include <qmessagebox.h> #include <deque> #include <qdebug.h> #include <algorithm> #include <functional> using namespace std; QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); connect(ui.pushButton, &QPushButton::clicked, this, [=] { // QMessageBox::information(this,"title","hello"); CompareTest(); //int abs_min = *max2c; //QMessageBox::warning(this, "title_abs_min", QString::number(abs_min)); }); //严重性 代码 说明 项目 文件 行 禁止显示状态 //错误 C2672 “std::invoke”: 未找到匹配的重载函数 QtWidgetsApplication1 D : \Program Files(x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\xutility 238 } void QtWidgetsApplication1::CompareTest() { deque<int> ideq; ideq.insert(ideq.end(), -1); for (int i = 2; i <= 8; i++) { ideq.insert(ideq.end(), i); } for (deque<int>::iterator iter = ideq.begin(); iter != ideq.end(); ++iter) { qDebug() << "info:" << *iter; int number = *iter; QString msg = QString::number(number); //QMessageBox::information(this, "title", msg); } int min_value = *min_element(ideq.begin(), ideq.end()); QMessageBox::warning(this, "title", QString::number(min_value)); int max_value = *max_element(ideq.begin(), ideq.end()); //QMessageBox::warning(this, "title", QString::number(max_value)); deque<int>::iterator max2 = max_element(ideq.begin(), ideq.end()); int max2a = *max2; //QMessageBox::warning(this, "title", QString::number(max2a)); int max2c=*max_element(ideq.begin(), ideq.end(), AbsLess<int,int>()); //二元谓词 QMessageBox::warning(this, "title", QString::number(max2c)); } //绝对值最小值 bool QtWidgetsApplication1::absLess(int elem1, int elem2) //两个参数就是二元谓词 { return abs(elem1) < abs(elem2); } QtWidgetsApplication1::~QtWidgetsApplication1() {}
欢迎讨论,相互学习。
cdtxw@foxmail.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2023-12-27 显示pycharm 前进后退的快捷按钮到工具栏
2023-12-27 python 没有switch/case
2023-12-27 python脚本传递args参数传递方法
2023-12-27 python的异常捕捉堆栈信息stacktrace,traceback
2023-12-27 python 打印九九乘法表
2019-12-27 cc23b_demo-函数对象c++ 调用操作符的重载与函数对象-//用模板定义一元谓词、代码示范