• 手机站
  • 收藏
聚培教育网合作机构 > 上海达内教育
上海达内教育
400-998-6158
上海达内教育是一家由留学海归创办的高端职业教育培训机构,是中国人才培养平台、人才输送平台。
上海达内教育

c++ vector 使用效率问题

java学习网

更新时间:2021-07-15 浏览:277
核心提示:1. vector中的erase方式 高效率是很低。由于为了更好地维持vector中原素在存储空间中的持续性,在删掉某一原素以后,*将之后

1. vector中的erase方式 高效率是很低。

由于为了更好地维持vector中原素在存储空间中的持续性,在删掉某一原素以后,*须将之后的原素先后往前挪动一个部位,均值复杂性为o(n)。

gcc 下erase的完成以下:

iterator erase(iteratorposition)

{

if (position 1 != end())

copy(position 1, finish, position); // 事后原素向前挪动

--finish;

destroy(finish); // 一个释放出来資源的全局性涵数

return position;

}

解决方案:

假如要删除了原素在最后一个部位,则不用挪动别的原素,只*须o(1)的時间花销,根据这类观念,能够完成一种高效率的vector中删掉原素的方式

for(int i=0; i

{

if( some condition )

{

swap( vec[i], vec[vec.size()-1]);

vec.pop_back();

}

else

{

i ;

}

}

2.迭代器应用

vector int_vec;

for( vector::iterator iter = int_vec.begin(); iter != int_vec.end(); iter)

{

}

干万留意要应用 iter 不可以应用iter

iter 是先复制一份值,再开展 ,高效率很低

更多>同类资讯
更多>相关课程
顶部