QList和QSet常用操作(查找、插入、排序、交集)

1、QList常用操作(查找、插入、排序)
(1)QList查找(前提:已排序)
cpp 复制代码
/*[查找val在列表(已排序)中的位置,返回值范围[-1,0,,size()-1]]*/
int posOf(const QList<int> &list1, int val)
{
    auto it = std::find_if(list1.begin(), list1.end(), [val](int itemVal) {
        return (itemVal == val);
    });
    return ((it != list1.end()) ? (it - list1.begin()) : -1);
}

示例:list = 5,7,11,13,17,19

Pos of 3 is [-1], 11 is [2], 19 is [5], 23 is [-1].

(2)QList插入位置(前提:已排序)
cpp 复制代码
/*[获取val在列表(已排序)中的插入位置,返回值范围为[0,,size()]]*/
int insertPosOf(const QList<int> &list1, int val)
{
    auto it = std::lower_bound(list1.begin(), list1.end(), val, [](int itemVal, int val) {
        return itemVal < val;
    });
    return (it - list1.begin());
}

示例:list = 5,7,11,13,17,19

Insert pos of 3 is [0], 11 is [2], 19 is [5], 23 is [6].

(3) QList排序
  • 升序
cpp 复制代码
QList<int> list;
......
std::sort(list.begin(), list.end(), std::less<int>{});

cpp 复制代码
std::sort(list.begin(), list.end()); //默认为less<>{}

示例:list << 37 << 23 << 83 << 71 << 91 << 53 << 11 << 61 << 19;

list ASC = 11,19,23,37,53,61,71,83,91

  • 降序
cpp 复制代码
std::sort(list.begin(), list.end(), std::greater<int>{});

示例:list << 37 << 23 << 83 << 71 << 91 << 53 << 11 << 61 << 19;

list DESC = 91,83,71,61,53,37,23,19,11

2、QSet常用操作(交集)
cpp 复制代码
QList<int> listL;
QList<int> listR;
QList<int> list1;
......
{
    QSet<int> set1 = QSet(list1.constBegin(), list1.constEnd());
    QSet<int> setL = QSet(listL.cbegin(), listL.cend());
    set1.intersect(setL);
    QList<int> list1L = QList(set1.cbegin(), set1.cend());
    std::sort(list1L.begin(), list1L.end());
}

示例:

listL << 0 << 2 << 4 << 6 << 8 << 10 << 12 << 14 << 16 << 18 << 20 << 22;

listR << 1 << 3 << 5 << 7 << 9 << 11 << 13 << 15 << 17 << 19 << 21 << 23;

list1 << 3 << 6 << 8 << 11 << 14 << 15 << 18 << 21;

list1L(list1 intersect listL) = 6, 8,14,18

list1R(list1 intersect listR) = 3,11,15,21

相关推荐
让我们一起加油好吗4 小时前
【基础算法】初识搜索:递归型枚举与回溯剪枝
c++·算法·剪枝·回溯·洛谷·搜索
郝学胜-神的一滴4 小时前
Horse3D游戏引擎研发笔记(七):在QtOpenGL环境下,使用改进的Uniform变量管理方式绘制多彩四边形
c++·3d·unity·游戏引擎·图形渲染·虚幻·unreal engine
2401_876221346 小时前
Reachability Query(Union-Find)
c++·算法
躲着人群8 小时前
次短路&&P2865 [USACO06NOV] Roadblocks G题解
c语言·数据结构·c++·算法·dijkstra·次短路
一只鲲9 小时前
56 C++ 现代C++编程艺术5-万能引用
开发语言·c++
小欣加油10 小时前
leetcode 1493 删掉一个元素以后全为1的最长子数组
c++·算法·leetcode
争不过朝夕,又念着往昔11 小时前
即时通讯项目---网关服务
linux·c++·vscode
蓝风破云11 小时前
C++实现常见的排序算法
数据结构·c++·算法·排序算法·visual studio
怀旧,11 小时前
【C++】 9. vector
java·c++·算法
这儿有一堆花14 小时前
C++标准库算法:从零基础到精通
c++