前提
1. 当前需求里的Key是有规律的,类似前key与key直接间隔一样
背景
1. 因为QMap具有自动key排序的特性,故而可以进行利用
2. 时间复杂度可大O(n), n是查找次数, n 必然小于等于 QMap.size()
算法
int newKey = 0;
if(idNameMap.size() > 0)
{
newKey = idNameMap.firstKey();// 用QMap里的最小的做查找起点
QMap<int, QString>::iterator iter = idNameMap.begin();
for( ; iter != idNameMap.end(); iter++)
{
if(newKey == iter.key())
{
newKey++;
continue;
}
else {
break;
}
}
}
return newKey;
提点
1. 对于那些非有序的数据结构,权衡排序所花时间与排序号查找所花的时间来处理, 当然排序也要遍历一遍。