IT開發/UI設計/運營/影視特效培訓機構

400-111-8989

熱門課程

c++ vector 使用效率問題

  • 發布:IT培訓
  • 來源:IT學習資料
  • 時間:2018-11-29 15:28

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++ 是先拷貝一份值,再進行++,效率很低

預約申請免費試聽課

填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

上一篇:copy構造隱藏的陷阱
下一篇:C++ Builder 執行線程對象

達內it學習路線?如何學好it?

學編程需要什么基礎嗎?

Python、Java、C++該學哪一個

學編程需要什么基礎嗎

  • 掃碼領取資料

    回復關鍵字:視頻資料

    免費領取 達內課程視頻學習資料

  • 視頻學習QQ群

    添加QQ群:1143617948

    免費領取達內課程視頻學習資料

Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

選擇城市和中心
江西省

貴州省

廣西省

海南省

中出人妻中文字幕无码