【问题标题】:Binary search in ordered QVector [duplicate]有序 QVector 中的二进制搜索 [重复]
【发布时间】:2016-10-20 23:22:19
【问题描述】:

我已经通过qSort 订购了QVector<QString>。我想获取指定QString 的索引,但qBinarySearch 返回Java 风格的迭代器,允许移动下一个/后退或指向QString 的指针(因为QVector::iteratortypedef T*)。如何在不迭代每个元素并检查的情况下获取元素的索引。唯一的方法是自己制作二分搜索方法(我知道,但为什么还要发明轮子?)?

【问题讨论】:

    标签: c++ linux qt5.5


    【解决方案1】:

    根据http://doc.qt.io/qt-5/qtalgorithms-obsolete.html,这些算法已经过时,建议您改用std::binary_search(或std::lower_bound)。它们返回随机访问迭代器,因此将它们转换为索引既便宜又容易。

    【讨论】:

    • 实际问题隐藏在不相关的细节中。它是关于从迭代器中获取索引。
    • @juanchopanza 好吧,它可能是。如果 OP 正确,qBinarySearch 返回了一个非标准 Java 风格的迭代器,那么标准技术将不起作用。
    • 我不知道减法“开始 - 迭代器”返回索引。我已经用我的方法做到了。
    • @patrykbajos 你的意思是迭代器开始
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2020-11-16
    • 2019-05-02
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多