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