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()
{}
复制代码

 

posted @   txwtech  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!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++ 调用操作符的重载与函数对象-//用模板定义一元谓词、代码示范
点击右上角即可分享
微信分享提示