程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c++ vector 使用效率問題

c++ vector 使用效率問題

編輯:C++入門知識

1. vector中的erase方法效率是很低。   因為為了保持vector中元素在內存空間中的連續性,在刪除某個元素之後,需要將其後的元素依次向前移動一個位置,平均復雜度為o(n)。www.2cto.com   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<vec.size();) {     if( some condition )     {         swap( vec[i], vec[vec.size()-1]);         vec.pop_back();     }     else     {         i ++ ;     } }       2.迭代器使用   vector<int> int_vec; for( vector<int>::iterator iter = int_vec.begin(); iter != int_vec.end(); ++ iter) {  ...  }   千萬注意要使用++iter 不能使用iter++   iter++ 是先拷貝一份值,再進行++,效率很低

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved