我其实是希望放在第一个,这样我就可以用begin来访问到该新元素--正在在做一个连接池,希望把刚用完的连接放到最前面,这样就可以经常用到,而不常用的就逐渐废弃断掉了。从代码的实际运行情况来看,就是我所希望的模式,但是否偶然现象? 于是找到了这篇帖子,原来std::set内部并不是以数组来保存元素的,而是用树。这样的话,所谓的前后并没有什么意义!这个早就应该想到的!STL集合就是通过枚举器(iterator)来封装内部的存贮空间和算法的,只要用begin,next就可以遍历所有元素而不用管其内部的存贮位置。当然了std::set还是有一个固定“存贮位置”的,也就是说在其它元素没有变化的情况下,把位于begin位置的元素取出来(erase),再放回去(insert),还是会处于begin的位置的--这里说的是枚举的顺序。 如此看来,我前面的做法是没有错的。不过,这多半是因为运气好。因为,从insert这个函数名称上就没有任何保证说一定会放到begin位置。而且,很有可能换用了别的集合类型,比如把set改成list,就达不到前面的预期的效果了。所以,这段代码存在隐阅读全文>
发表于 @ 2008年05月28日 17:41:00|评论(loading...)|编辑|收藏