精华内容
下载资源
问答
  • 2021-12-13 10:57:38

    简介

    QSet类是一个模板类,他是一个哈希表集合。
    QSet是Qt的一个普通容器类。QSet存储的值是不指明顺序的,QSet对这些值提供了快速检索的功能。他和QHash很像

    QSet数据添加

    //QSet 存储的值是不指明顺序的,方便实现快速检索
    //哈希表实现
    struct StuInfo
    {
    public:
        QString strName;
        quint32 index;
        quint32 uiAge;
        bool operator < (const StuInfo &b) const
        {
            return uiAge < b.uiAge;
        }
    
        bool operator == (const StuInfo &b) const
        {
            return strName == b.strName;
        }
    
    
    
    };
    
    
    uint qHash(const StuInfo key)
    {
        return key.index;
    }
    
    void demoSetAdd()
    {
        QSet<StuInfo> setClass={StuInfo{"111",3},StuInfo{"333",1},StuInfo{"
    更多相关内容
  • QSet使用自定义类型

    千次阅读 2022-03-29 22:12:01
    QSet qHash

    QSet使用及Qt自定义类型使用QHash等算法
    qHash 哈希函数

    Qt提供的一个单值的数学集合的快速查找容器,使用方式与QList相同,但其内元素不会有重复。
    注意,此容器实现方式是基于哈希表

    下面是可以在 QHash 中作为键使用的 C++ 和 Qt 类型的不完全列表:任何整数类型(char,unsigned long 等),任何指针类型,QChar,QString 和 QByteArray。对于所有这些类型, 头文件会定义 qHash 函数,该函数计算合适的哈希值。 其它许多 Qt 类也会为其类型声明 qHash 重载函数;具体请参考类文档。

    如果想使用其它类型作为键,请确保提供 operator== 运算符并实现 qHash 函数。

    class testCustomTypeByQSet
    {
    public:
        testCustomTypeByQSet(int v, QString str): m_num(v), m_str(str) {}
        int getNum() const
        {
            return m_num;
        }
        QString getStr() const
        {
            return m_str;
        }
        bool operator == (const testCustomTypeByQSet &t) const //速度快点
        {
            return (m_num == t.getNum() && m_str == t.getStr());
        }
    private:
        int m_num;
        QString m_str;
    };
    //inline bool operator == (const testCustomTypeByQSet &t1, const testCustomTypeByQSet &t2) //速度慢点
    //{
    //    return (t1.getNum() == t2.getNum() && t1.getStr() == t2.getStr());
    //}
    inline uint qHash(const testCustomTypeByQSet &key, uint seed = 0)
    {
        uint ret = qHash(key.getStr(), seed)^qHash(key.getNum(), seed);
        return ret;
    }
    
    void func6()
    {
        testCustomTypeByQSet t1(10, "10");
        testCustomTypeByQSet t2(10, "11");
        QSet<testCustomTypeByQSet> myset;
        QElapsedTimer timer;
        timer.start();
        for (int var = 0; var < 1000000; ++var) {
            myset.insert(t1);
            myset.insert(t2);
        }
        qInfo() << "+++" << timer.elapsed();
    }
    
    展开全文
  • Qt容器:QSet

    千次阅读 2021-07-24 22:20:55
    QSet<T> 是 Qt 的通用容器类之一。 它以未指定的顺序存储值并提供非常快速的值查找。 二、成员函数 QSet的API大部分和QList相同。这里仅列举QSet独有的成员函数。 1、QSet<T> & intersect(const ...

    一、描述

    QSet<T> 是 Qt 的通用容器类之一。 它以未指定的顺序存储值并提供非常快速的值查找。

    二、成员函数

    QSet的API大部分和QList相同。这里仅列举QSet独有的成员函数。

    1、QSet<T> & intersect(const QSet<T> &other)

         QSet<T> & operator&=(const QSet<T> &other)

    从当前集合中删除other集合中未包含的所有项目。返回当前集合的引用。

        QSet<int> set1{1,2,3,4,5};
        QSet<int> set2{4,5};
    
        set1.intersect(set2);
        qDebug()<<set1;// QSet(4, 5)

    2、bool intersects(const QSet<T> &other)

    如果此集合至少有一项与 other 的项相同,则返回 true。(是否相交)

    3、QSet<T> & subtract(const QSet<T> &other)

    从当前集合中删除包含在other集合中的所有项目。返回当前集合的引用。

        QSet<int> set1{1,2,3,4,5};
        QSet<int> set2{4,5};
    
        set1.subtract(set2);
        qDebug()<<set1;// QSet(1, 2, 3)

    4、QSet<T> & unite(const QSet<T> &other)

    other 集合合并到当前集合。 返回当前集合的引用。

        QSet<int> set1{1,2,3,4,5};
        QSet<int> set2{4,5,6,7};
    
        set1.unite(set2);
        qDebug()<<set1;//QSet(3, 1, 5, 6, 7, 2, 4)

    5、QSet<T> operator&(const QSet<T> &other)

    返回新的集合。取交集。

        QSet<int> set1{1,2,3,4,5};
        QSet<int> set2{4,5,6,7};
    
        qDebug()<<(set1 & set2);//QSet(4, 5)

    6、QSet<T> & operator&=(const T &value)

        QSet<int> set1{1,2,3,4,5};
    
        set1 &= 4;
        qDebug()<<set1;//QSet(4)

    7、QSet<T> operator-(const QSet<T> &other)

    返回一个新的 QSet,它是当前集合和 other 集合的集合差。

        QSet<int> set1{1,2,3,4,5};
        QSet<int> set2{4,5,6,7};
    
        qDebug()<<(set1 - set2);// QSet(1, 2, 3)

    8、QSet<T> & operator-=(const QSet<T> &other)

    等同于 subtract(other)。

    9、QSet<T> & operator-=(const T &value)

        QSet<int> set1{1,2,3,4,5};
    
        qDebug()<<(set1 -= 3);// QSet(5, 2, 1, 4)
    展开全文
  • QSet的坑

    2021-11-22 15:03:36
    std::set内部会自动对元素进行大小排序,而QSet不会,因为QSet内部使用的是哈希表,而std::set用的是红黑树。 请看:

    std::set内部会自动对元素进行大小排序,而QSet不会,因为QSet内部使用的是哈希表,而std::set用的是红黑树。这QSet太坑了,既然取这个名字,却和std::set这个特性不一致。

    请看:

    展开全文
  • QT QSet集合的使用

    千次阅读 2021-04-16 11:15:18
    QT QSet集合的使用因为这个集合可以去重,所以会使用到,但是无序无下标eg:代码: 因为这个集合可以去重,所以会使用到,但是无序无下标 eg: 上面的lineEdit内输入内容,底下两个按钮整合 第一个是单纯的获取内容存储在...
  • QT的QSet类的使用

    千次阅读 2020-12-24 09:48:54
    QSet类是提供基于散列表的集合的模板类。 QSet 是Qt的通用容器类之一。它以未指定的顺序存储值,并提供非常快速的值查找。在内部,QSet 被实现为QHash。 这是带有QString值的QSet示例: QSet<QString> set; ...
  • QSet支持自定义类对象

    2020-10-30 11:16:36
    QSet支持自定义类对象,但需要类对象做特殊处理才可以。 添加全局函数qHash()。 运算符“==”重载。 程序实例 自定义类 class MyData1 { public: MyData1(int a, int b) { m_a=a; m_b=b; } bool operator...
  • 除了QHash之外,Qt还提供了一个用来高速缓存与键相关联的对象的QCache类以及仅仅存储键的QSet容器。在内部,它们都依赖于QHash,且都像QHash一样对K的类型有相同的要求。 最简便的遍历存储在关联容器中多有键值对的...
  • 容器类:QVector、QList、QSet、QMap使用

    千次阅读 2019-06-24 15:26:00
    QSet存储的值是不指明顺序的,QSet对这些值提供了快速检索的功能 1、操作元素 QSet<int> setInt; setInt.insert(1); setInt.insert(2); setInt ; setInt.contains(2); //查询是否有3 qDebug() (); //5,...
  • 转载自:Techie亮博客»QSet使用及Qt自定义类型使用QHash等算法 文章目录 1. 介绍 2. 简单范例 3. 自定义类型 1. 介绍 Qt提供的一个单值的数学集合的快速查找容器,使用方式与QList相同,但其内元素不会有重复...
  • Qt文档阅读笔记-QSet官方解析及实例

    万次阅读 多人点赞 2019-01-10 17:14:32
    QSet存储的值是不指明顺序的,QSet对这些值提供了快速检索的功能。他和QHash很像 PS:Set就是键值一样的Hash 这里举一个QSet中存储QString的栗子: QSet&lt;QString&gt; set; 使用insert()...
  • 1. QSet<T> 只去重不排序, T必须实现 operator==() 和 全局qHash() 2. set<T> 即去重又排序 3. QSet<T>比set<T>速度快,占用空间多 示例: class CPoint { public: CPoint(short xx = 0...
  • qt中QSet的使用

    千次阅读 2020-07-10 15:16:36
    目前知道是容器中的一种,可以用来剔除读取的字符串中重复的部分,类似于哈希表。 后期再继续更新吧。。。
  • QSet转为QList

    2019-01-24 15:04:33
    QList&lt;quint32&gt; m_IDList; QSet&lt;quint32&gt; m_IDSet; m_IDList = m_IDSet.toList();
  • 使用迭代器方式的问题是 erase 删除 后需要赋值给自身,不方便。 使用容器数量for来删除的问题是,删除后容器数量变化不...如下:其它 QList QSet 一样的删除。 QMap<int, int> mapt; for (int i = 0 ;i<...
  • QSet的作用

    2021-06-09 09:15:53
    QSet文档介绍 QSet fileSet; 假如要将给定几个路径检测出的所有文件都放入容器里,而路径存在包含关系,如:/home/gpy和/home/gpy/files,则容器里不会重复包含一个文件名 如果要将fileSet当做一个链表去遍历,可以...
  • 1.QT中的容器QVector,QList,QSet,QMap,QQueue,QStack,QMultiMap,QSingleList等.pdf
  • QSet转换排序

    千次阅读 2017-09-19 18:53:01
    QList list = ui.tablwWidget->selectedItems();...QSet set; foreach(QTableWidgetItem *item. list) { set.insert(item.row()); } QList listTmp = QList::fromSet(set); qSort(listTmp);
  • QSet存储一个自定义结构体

    千次阅读 2017-09-19 15:52:25
    QSet作为储存一个自定义的结构体 事先说明:以下这个例子是错误的 [cpp] view plain copy #include    struct node  {   int cx, cy;   bool operator const node &b) const  ...
  • qset容器

    千次阅读 2018-08-15 20:07:12
    QSet&lt;type&gt; name = {d,d,d,d,d};//初始化
  • QSet 基本控件

    2020-05-01 23:06:13
    QSet class is a template class that provides a hash-table-based set 二、代码 QSet is one of Qt’s generic container classes. It stores values in an unspecified order and provides very fast lookup of t...
  • Qt中QSet的使用

    千次阅读 2016-03-07 11:03:56
    前几天要用QSet作为储存一个自定义的结构体(就像下面这个程序一样),结果死活不成功。。。后来还跑到论坛上问人了,丢脸丢大了。。。事先说明:以下这个例子是错误的代码如下:#include<QtCore> structnode ...
  • <QSet> #include #include #include #include #include   int main() {   QVector < int > intVector;   intVector 5 ;   intVector.append( 15 ); ...
  • 一、顺序容器 QList QLinkedList QVector QStack ... QSet QMap QMultiMap QHash QMultiHash 三、容器迭...
  • 使用QSet遇到的编译错误

    千次阅读 2011-03-09 18:00:00
    QSet pointSet; pointSet.insert(QPoint()); 编译后却得到一个编译错误: error C2665: 'qHash' : none of the 16 overloads could convert all the argument types 1> include/qtcore/../../src/core

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,856
精华内容 742
关键字:

Qset