读书人

问一个multi地图容器迭代器的有关问题

发布时间: 2012-12-15 15:16:03 作者: rapoo

问一个multimap容器迭代器的问题??
multimap<double,double> coors;
multimap<double,double>::iterator itcoors1,itcoors2;
itcoors1=coors.begin();
itcoors2=coors.begin()+coors.size()/2;///这句报错
multimap<double,double> co1;
co1.insert(itcoors1,itcoors2);
我想取得中间的迭代器,获得一个迭代器区间,再把这区间的数据插入到另一个迭代器中,怎么老是报错。
谢谢了
[最优解释]
一个一个插:


multimap<double,double> coors;
multimap<double,double>::iterator itcoors1,itcoors2;
multimap<double,double> co1;

int nCoorsSize = coors.size();
int i;
itcoors1 = coors.begin();
for (i = 0; i < nCoorsSize / 2; i++)
{
co1.insert(*itcoors1);
itcoors1++;
}


VS2008中multimap的insert区间函数原形:
void insert(_It _F, _It _L)
{for (; _F != _L; ++_F)
_Tr.insert(*_F); }
可见函数中也是用for循环来一个一个插入的。

[其他解释]
虽然如果A树的所有元素都小于B树的所有元素的话红黑树的确有O(logn)的合并。但是一般情况下的确只能一个个搞。
[其他解释]
引用:
一个一个插:
C/C++ code?123456789101112multimap<double,double> coors; multimap<double,double>::iterator itcoors1,itcoors2;multimap<double,double> co1; int nCoorsSize = coors.size();int i;itc……

谢谢,看样子也只能这么搞了。

读书人网 >C++

热点推荐