算法咨询:如何在插入到关联容器时,同时获得插入数据的位置?
我的需求如下:
用一个set记录每一次的插入数据,在插入当前数据的同时,还希望能获得当前插入数据在整个set中的位置。
目前能想到的方法:
inset(value);
//迭代
int index = 0;
SET::iterator ite = set.begin();
SET::iterator iteend = set.end();
while (ite != iteend && *ite != value)
{
++ite;
++index;
}
这个查找位置的算法时间复杂度为O(n),我觉得比较浪费。
但关联容器是基于二叉树实现的,查找插入的位置时,应该用的是二分法查找,找到插入位置时,的确又不能确定前面有多少个元素。
不知道有没有高手研究过这个问题?