gpt4 book ai didi

c++ - 获取 QMap::iterator 的位置(int)

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:07 26 4
gpt4 key购买 nike

我编写了一个基于 QListModel 的模型来访问存储在 QMap 中的数据。 QMap 保证被排序。因此,从 QMap::iterator 或 const_iterator 到 int 的转换应该是可能的并且是理智的。

目前我递减迭代器并递增一个计数器变量:

    QVariantMap::iterator it = m_data.upperBound(name); //or any other iterator
int pos = 0;
for (;it != m_data.begin();it--)
pos++;
//now pos contains the position of the entry at index in the map

对于某些数据结构,似乎定义了一个 int operator-(iterator),允许 int pos = it - m_data.begin(); 是否有类似的东西对于 QMap?

最佳答案

我不是特别熟悉 QMap,但通常情况下,这是查找 map 中元素等级的最简单算法。

假设 Qt 迭代器可用于标准算法,您可以将其简化为 std::distance(m_data.begin(), it)。否则,您可以使用您展示的算法自己为 QMap 迭代器实现 distance

关于c++ - 获取 QMap::iterator 的位置(int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34674461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com