<分区>
我已经订购了 QVector<QString>
通过 qSort
.我想获取指定的索引 QString
,但是qBinarySearch
返回 Java 风格的迭代器,允许移动下一个/后退或指向 QString
的指针(因为 QVector::iterator
是 typedef T*
)。如何在不对每个元素进行迭代和检查的情况下获取元素索引。唯一的办法是自己做二分查找法吗(我知道怎么做,但为什么又要发明轮子?)?
<分区>
我已经订购了 QVector<QString>
通过 qSort
.我想获取指定的索引 QString
,但是qBinarySearch
返回 Java 风格的迭代器,允许移动下一个/后退或指向 QString
的指针(因为 QVector::iterator
是 typedef T*
)。如何在不对每个元素进行迭代和检查的情况下获取元素索引。唯一的办法是自己做二分查找法吗(我知道怎么做,但为什么又要发明轮子?)?
最佳答案
根据 http://doc.qt.io/qt-5/qtalgorithms-obsolete.html这些算法已过时,建议您改用 std::binary_search
(或 std::lower_bound
)。它们返回随机访问迭代器,因此将它们转换为索引既便宜又容易。
关于c++ - 有序 QVector 中的二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37910065/